From 050d937954c3e19686a65cf5748aeaf45ec4b7bf Mon Sep 17 00:00:00 2001 From: Jan Tychtl Date: Wed, 1 Apr 2026 17:20:25 +0200 Subject: [PATCH 1/6] chore: remove accidental Pydantic v2 model files risk: low --- .../gooddata_api_client/models/__init__.py | 12 +- .../models/aac_analytics_model.py | 136 -------- .../models/aac_attribute_hierarchy.py | 98 ------ .../models/aac_container_widget.py | 112 ------- .../models/aac_dashboard.py | 145 --------- .../models/aac_dashboard_filter.py | 123 ------- .../models/aac_dashboard_filter_from.py | 147 --------- .../models/aac_dashboard_permissions.py | 102 ------ .../models/aac_dashboard_plugin_link.py | 95 ------ .../models/aac_dashboard_with_tabs.py | 93 ------ .../models/aac_dashboard_without_tabs.py | 106 ------ .../gooddata_api_client/models/aac_dataset.py | 145 --------- .../models/aac_dataset_primary_key.py | 147 --------- .../models/aac_date_dataset.py | 102 ------ .../gooddata_api_client/models/aac_field.py | 151 --------- .../models/aac_filter_state.py | 90 ------ .../models/aac_geo_area_config.py | 92 ------ .../models/aac_geo_collection_identifier.py | 101 ------ .../gooddata_api_client/models/aac_label.py | 131 -------- .../models/aac_label_translation.py | 90 ------ .../models/aac_logical_model.py | 106 ------ .../gooddata_api_client/models/aac_metric.py | 106 ------ .../models/aac_permission.py | 92 ------ .../gooddata_api_client/models/aac_plugin.py | 98 ------ .../gooddata_api_client/models/aac_query.py | 118 ------- .../models/aac_query_fields_value.py | 147 --------- .../models/aac_query_filter.py | 127 -------- .../models/aac_reference.py | 100 ------ .../models/aac_reference_source.py | 103 ------ .../models/aac_rich_text_widget.py | 112 ------- .../gooddata_api_client/models/aac_section.py | 104 ------ .../gooddata_api_client/models/aac_tab.py | 115 ------- .../models/aac_visualization.py | 234 -------------- .../models/aac_visualization_basic_buckets.py | 118 ------- .../aac_visualization_bubble_buckets.py | 118 ------- .../aac_visualization_dependency_buckets.py | 118 ------- .../models/aac_visualization_geo_buckets.py | 118 ------- .../models/aac_visualization_layer.py | 146 --------- .../aac_visualization_scatter_buckets.py | 118 ------- .../aac_visualization_stacked_buckets.py | 118 ------- .../aac_visualization_switcher_widget.py | 112 ------- .../models/aac_visualization_table_buckets.py | 118 ------- .../models/aac_visualization_trend_buckets.py | 118 ------- .../models/aac_visualization_widget.py | 112 ------- .../gooddata_api_client/models/aac_widget.py | 173 ---------- .../models/aac_widget_size.py | 92 ------ .../models/aac_workspace_data_filter.py | 100 ------ .../models/absolute_date_filter.py | 92 ------ ...solute_date_filter_absolute_date_filter.py | 128 -------- .../models/abstract_measure_value_filter.py | 171 ---------- .../models/active_object_identification.py | 92 ------ .../models/ad_hoc_automation.py | 204 ------------ .../gooddata_api_client/models/afm.py | 135 -------- .../models/afm_cancel_tokens.py | 88 ----- .../models/afm_execution.py | 104 ------ .../models/afm_execution_response.py | 92 ------ .../models/afm_filters_inner.py | 156 --------- .../models/afm_identifier.py | 141 -------- .../models/afm_local_identifier.py | 96 ------ .../models/afm_object_identifier.py | 92 ------ .../models/afm_object_identifier_attribute.py | 92 ------ ..._object_identifier_attribute_identifier.py | 106 ------ .../models/afm_object_identifier_core.py | 92 ------ .../afm_object_identifier_core_identifier.py | 106 ------ .../models/afm_object_identifier_dataset.py | 92 ------ ...fm_object_identifier_dataset_identifier.py | 106 ------ .../afm_object_identifier_identifier.py | 106 ------ .../models/afm_object_identifier_label.py | 92 ------ .../afm_object_identifier_label_identifier.py | 106 ------ .../models/afm_valid_descendants_query.py | 96 ------ .../models/afm_valid_descendants_response.py | 105 ------ .../models/afm_valid_objects_query.py | 102 ------ .../models/afm_valid_objects_response.py | 96 ------ .../gooddata_api_client/models/alert_afm.py | 125 -------- .../models/alert_condition.py | 171 ---------- .../models/alert_condition_operand.py | 141 -------- .../models/alert_description.py | 136 -------- .../models/alert_evaluation_row.py | 104 ------ .../models/all_time_date_filter.py | 92 ------ ...l_time_date_filter_all_time_date_filter.py | 122 ------- .../models/allowed_relationship_type.py | 108 ------- .../models/analytics_catalog_created_by.py | 98 ------ .../models/analytics_catalog_tags.py | 88 ----- .../models/analytics_catalog_user.py | 92 ------ .../models/anomaly_detection.py | 118 ------- .../models/anomaly_detection_config.py | 96 ------ .../models/anomaly_detection_request.py | 88 ----- .../models/anomaly_detection_result.py | 92 ------ .../models/anomaly_detection_wrapper.py | 92 ------ .../models/api_entitlement.py | 101 ------ .../models/arithmetic_measure.py | 107 ------- .../models/arithmetic_measure_definition.py | 92 ------ ...c_measure_definition_arithmetic_measure.py | 106 ------ .../models/assignee_identifier.py | 98 ------ .../models/assignee_rule.py | 96 ------ .../models/attribute_elements.py | 141 -------- .../models/attribute_elements_by_ref.py | 88 ----- .../models/attribute_elements_by_value.py | 88 ----- .../attribute_execution_result_header.py | 92 ------ .../models/attribute_filter.py | 156 --------- .../models/attribute_filter_by_date.py | 90 ------ .../models/attribute_filter_elements.py | 88 ----- .../models/attribute_filter_parent.py | 94 ------ .../models/attribute_format.py | 92 ------ .../models/attribute_header.py | 92 ------ .../attribute_header_attribute_header.py | 154 --------- .../models/attribute_item.py | 104 ------ .../models/attribute_negative_filter.py | 90 ------ .../models/attribute_positive_filter.py | 90 ------ .../models/attribute_result_header.py | 90 ------ .../models/automation_alert.py | 124 ------- .../models/automation_alert_condition.py | 171 ---------- .../automation_dashboard_tabular_export.py | 92 ------ .../models/automation_external_recipient.py | 88 ----- .../models/automation_image_export.py | 92 ------ .../models/automation_metadata.py | 111 ------- .../models/automation_notification.py | 94 ------ .../models/automation_raw_export.py | 92 ------ .../models/automation_schedule.py | 98 ------ .../models/automation_slides_export.py | 92 ------ .../models/automation_tabular_export.py | 92 ------ .../models/automation_visual_export.py | 92 ------ .../models/available_assignees.py | 106 ------ .../models/aws_bedrock_access_key_auth.py | 118 ------- .../models/aws_bedrock_provider_config.py | 105 ------ .../models/azure_foundry_api_key_auth.py | 104 ------ .../models/azure_foundry_provider_auth.py | 126 -------- .../models/azure_foundry_provider_config.py | 105 ------ .../models/bedrock_provider_auth.py | 126 -------- .../models/bounded_filter.py | 110 ------- .../models/change_analysis_params.py | 125 -------- .../change_analysis_params_filters_inner.py | 156 --------- .../models/change_analysis_request.py | 136 -------- .../models/change_analysis_response.py | 92 ------ .../models/change_analysis_result.py | 96 ------ .../models/chat_history_interaction.py | 148 --------- .../models/chat_history_request.py | 126 -------- .../models/chat_history_result.py | 98 ------ .../models/chat_request.py | 134 -------- .../gooddata_api_client/models/chat_result.py | 130 -------- .../models/chat_usage_response.py | 92 ------ .../models/clustering_config.py | 90 ------ .../models/clustering_request.py | 91 ------ .../models/clustering_result.py | 98 ------ .../models/column_override.py | 116 ------- .../models/column_statistic.py | 98 ------ .../models/column_statistic_warning.py | 90 ------ .../models/column_statistics_request.py | 119 ------- .../models/column_statistics_request_from.py | 141 -------- .../models/column_statistics_response.py | 118 ------- .../models/column_warning.py | 90 ------ .../gooddata_api_client/models/comparison.py | 108 ------- .../models/comparison_condition.py | 92 ------ .../models/comparison_condition_comparison.py | 98 ------ .../models/comparison_measure_value_filter.py | 92 ------ ..._filter_comparison_measure_value_filter.py | 119 ------- .../models/comparison_wrapper.py | 92 ------ .../models/compound_measure_value_filter.py | 92 ------ ...ue_filter_compound_measure_value_filter.py | 117 ------- .../models/content_slide_template.py | 114 ------- .../models/cover_slide_template.py | 116 ------- .../create_knowledge_document_request_dto.py | 96 ------ .../create_knowledge_document_response_dto.py | 94 ------ .../models/created_visualization.py | 148 --------- .../created_visualization_filters_inner.py | 186 ----------- .../models/created_visualizations.py | 108 ------- .../models/custom_label.py | 88 ----- .../models/custom_metric.py | 90 ------ .../models/custom_override.py | 116 ------- .../models/dashboard_attribute_filter.py | 92 ------ ...board_attribute_filter_attribute_filter.py | 146 --------- .../models/dashboard_date_filter.py | 92 ------ .../dashboard_date_filter_date_filter.py | 149 --------- .../models/dashboard_export_settings.py | 116 ------- .../models/dashboard_filter.py | 141 -------- .../models/dashboard_permissions.py | 116 ------- .../dashboard_permissions_assignment.py | 96 ------ .../models/dashboard_slides_template.py | 141 -------- .../dashboard_tabular_export_request.py | 135 -------- .../dashboard_tabular_export_request_v2.py | 137 -------- .../models/data_column_locator.py | 88 ----- .../models/data_column_locators.py | 101 ------ .../models/data_source_parameter.py | 90 ------ .../data_source_permission_assignment.py | 102 ------ .../models/data_source_schemata.py | 88 ----- .../models/data_source_table_identifier.py | 115 ------- .../models/database_instance.py | 92 ------ .../models/dataset_grain.py | 98 ------ .../models/dataset_reference_identifier.py | 98 ------ ...ataset_workspace_data_filter_identifier.py | 106 ------ .../models/date_absolute_filter.py | 92 ------ .../gooddata_api_client/models/date_filter.py | 156 --------- .../models/date_relative_filter.py | 102 ------ .../gooddata_api_client/models/date_value.py | 88 ----- .../models/declarative_aggregated_fact.py | 125 -------- .../declarative_analytical_dashboard.py | 214 ------------- ...larative_analytical_dashboard_extension.py | 106 ------ ...arative_analytical_dashboard_identifier.py | 106 ------ ...lytical_dashboard_permission_assignment.py | 96 ------ ...tical_dashboard_permission_for_assignee.py | 102 ------ ..._dashboard_permission_for_assignee_rule.py | 102 ------ ..._analytical_dashboard_permissions_inner.py | 141 -------- .../models/declarative_analytics.py | 92 ------ .../models/declarative_analytics_layer.py | 176 ---------- .../models/declarative_attribute.py | 156 --------- .../models/declarative_attribute_hierarchy.py | 158 --------- .../models/declarative_automation.py | 303 ------------------ .../models/declarative_color_palette.py | 98 ------ .../models/declarative_column.py | 109 ------- .../models/declarative_csp_directive.py | 91 ------ .../declarative_custom_application_setting.py | 105 ------ .../declarative_custom_geo_collection.py | 100 ------ .../declarative_custom_geo_collections.py | 96 ------ .../models/declarative_dashboard_plugin.py | 158 --------- .../models/declarative_data_source.py | 213 ------------ .../declarative_data_source_permission.py | 102 ------ .../declarative_data_source_permissions.py | 96 ------ .../models/declarative_data_sources.py | 96 ------ .../models/declarative_dataset.py | 186 ----------- .../models/declarative_dataset_extension.py | 106 ------ .../models/declarative_dataset_sql.py | 90 ------ .../models/declarative_date_dataset.py | 118 ------- .../models/declarative_export_definition.py | 157 --------- ...eclarative_export_definition_identifier.py | 106 ------ ...ative_export_definition_request_payload.py | 141 -------- .../models/declarative_export_template.py | 120 ------- .../models/declarative_export_templates.py | 96 ------ .../models/declarative_fact.py | 123 ------- .../models/declarative_filter_context.py | 109 ------- .../models/declarative_filter_view.py | 123 ------- .../models/declarative_identity_provider.py | 134 -------- ...eclarative_identity_provider_identifier.py | 106 ------ .../models/declarative_jwk.py | 102 ------ .../models/declarative_jwk_specification.py | 126 -------- .../models/declarative_label.py | 154 --------- .../models/declarative_label_translation.py | 90 ------ .../models/declarative_ldm.py | 116 ------- .../models/declarative_memory_item.py | 167 ---------- .../models/declarative_metric.py | 206 ------------ .../models/declarative_model.py | 92 ------ .../declarative_notification_channel.py | 169 ---------- ...rative_notification_channel_destination.py | 171 ---------- ...arative_notification_channel_identifier.py | 106 ------ .../declarative_notification_channels.py | 96 ------ .../models/declarative_organization.py | 192 ----------- .../models/declarative_organization_info.py | 162 ---------- .../declarative_organization_permission.py | 102 ------ .../models/declarative_reference.py | 119 ------- .../models/declarative_reference_source.py | 112 ------- .../models/declarative_rsa_specification.py | 134 -------- .../models/declarative_setting.py | 116 ------- ...declarative_single_workspace_permission.py | 102 ------ .../declarative_source_fact_reference.py | 102 ------ .../models/declarative_table.py | 112 ------- .../models/declarative_tables.py | 96 ------ .../models/declarative_theme.py | 98 ------ .../models/declarative_user.py | 134 -------- .../models/declarative_user_data_filter.py | 116 ------- .../models/declarative_user_data_filters.py | 96 ------ .../models/declarative_user_group.py | 118 ------- .../declarative_user_group_identifier.py | 106 ------ .../declarative_user_group_permission.py | 102 ------ .../declarative_user_group_permissions.py | 96 ------ .../models/declarative_user_groups.py | 96 ------ .../models/declarative_user_identifier.py | 106 ------ .../models/declarative_user_permission.py | 102 ------ .../models/declarative_user_permissions.py | 96 ------ .../models/declarative_users.py | 96 ------ .../models/declarative_users_user_groups.py | 106 ------ .../declarative_visualization_object.py | 204 ------------ .../models/declarative_workspace.py | 206 ------------ .../declarative_workspace_data_filter.py | 118 ------- ...eclarative_workspace_data_filter_column.py | 98 ------ ...rative_workspace_data_filter_references.py | 104 ------ ...clarative_workspace_data_filter_setting.py | 108 ------- .../declarative_workspace_data_filters.py | 96 ------ ...larative_workspace_hierarchy_permission.py | 102 ------ .../models/declarative_workspace_model.py | 98 ------ .../declarative_workspace_permissions.py | 106 ------ .../models/declarative_workspaces.py | 106 ------ .../models/default_smtp.py | 100 ------ .../delete_knowledge_document_response_dto.py | 90 ------ .../models/dependent_entities_graph.py | 111 ------- .../models/dependent_entities_node.py | 100 ------ .../models/dependent_entities_request.py | 109 ------- .../models/dependent_entities_response.py | 92 ------ .../gooddata_api_client/models/depends_on.py | 92 ------ .../models/depends_on_date_filter.py | 92 ------ .../models/dim_attribute.py | 100 ------ .../gooddata_api_client/models/dimension.py | 111 ------- .../models/dimension_header.py | 96 ------ .../gooddata_api_client/models/element.py | 90 ------ .../models/elements_request.py | 147 --------- .../elements_request_depends_on_inner.py | 141 -------- .../models/elements_response.py | 129 -------- .../models/entitlements_request.py | 96 ------ .../models/entity_identifier.py | 106 ------ .../models/entity_search_body.py | 128 -------- .../models/entity_search_page.py | 91 ------ .../models/entity_search_sort.py | 101 ------ .../models/execution_links.py | 88 ----- .../models/execution_response.py | 102 ------ .../models/execution_result.py | 120 ------- .../execution_result_data_source_message.py | 94 ------ .../models/execution_result_grand_total.py | 100 ------ .../models/execution_result_header.py | 197 ------------ .../models/execution_result_metadata.py | 96 ------ .../models/execution_result_paging.py | 92 ------ .../models/execution_settings.py | 92 ------ .../models/export_request.py | 141 -------- .../models/export_response.py | 88 ----- .../models/export_result.py | 113 ------- .../models/fact_identifier.py | 106 ------ .../models/failed_operation.py | 96 ------ .../gooddata_api_client/models/file.py | 162 ---------- .../gooddata_api_client/models/filter_by.py | 99 ------ .../models/filter_definition.py | 276 ---------------- .../filter_definition_for_simple_measure.py | 141 -------- .../models/forecast_config.py | 92 ------ .../models/forecast_request.py | 93 ------ .../models/forecast_result.py | 96 ------ .../models/found_objects.py | 98 ------ .../gooddata_api_client/models/frequency.py | 96 ------ .../models/frequency_bucket.py | 90 ------ .../models/frequency_properties.py | 88 ----- .../models/generate_description_request.py | 98 ------ .../models/generate_description_response.py | 90 ------ .../models/generate_ldm_request.py | 130 -------- .../models/generate_title_request.py | 98 ------ .../models/generate_title_response.py | 90 ------ .../models/geo_area_config.py | 92 ------ .../models/geo_collection_identifier.py | 102 ------ .../get_ai_lake_operation200_response.py | 159 --------- .../get_image_export202_response_inner.py | 102 ------ .../models/get_quality_issues_response.py | 108 ------- .../models/grain_identifier.py | 106 ------ .../models/granted_permission.py | 90 ------ .../models/granularities_formatting.py | 91 ------ .../models/header_group.py | 96 ------ .../models/hierarchy_object_identification.py | 98 ------ .../gooddata_api_client/models/histogram.py | 96 ------ .../models/histogram_bucket.py | 92 ------ .../models/histogram_properties.py | 88 ----- .../models/identifier_duplications.py | 100 ------ .../models/identifier_ref.py | 92 ------ .../models/identifier_ref_identifier.py | 98 ------ .../models/image_export_request.py | 110 ------- .../gooddata_api_client/models/in_platform.py | 96 ------ .../models/inline_filter_definition.py | 92 ------ .../models/inline_filter_definition_inline.py | 92 ------ .../models/inline_measure_definition.py | 92 ------ .../inline_measure_definition_inline.py | 88 ----- .../models/intro_slide_template.py | 123 ------- .../json_api_aggregated_fact_linkage.py | 98 ------ .../models/json_api_aggregated_fact_out.py | 124 ------- ...json_api_aggregated_fact_out_attributes.py | 122 ------- .../json_api_aggregated_fact_out_document.py | 108 ------- .../json_api_aggregated_fact_out_includes.py | 141 -------- .../json_api_aggregated_fact_out_list.py | 118 ------- .../json_api_aggregated_fact_out_list_meta.py | 92 ------ .../json_api_aggregated_fact_out_meta.py | 92 ------ ...son_api_aggregated_fact_out_meta_origin.py | 98 ------ ...n_api_aggregated_fact_out_relationships.py | 98 ------ ...gregated_fact_out_relationships_dataset.py | 97 ------ ...ated_fact_out_relationships_source_fact.py | 97 ------ ...json_api_aggregated_fact_out_with_links.py | 130 -------- .../json_api_analytical_dashboard_in.py | 112 ------- ..._api_analytical_dashboard_in_attributes.py | 99 ------ ...on_api_analytical_dashboard_in_document.py | 92 ------ .../json_api_analytical_dashboard_linkage.py | 98 ------ .../json_api_analytical_dashboard_out.py | 124 ------- ...api_analytical_dashboard_out_attributes.py | 177 ---------- ...n_api_analytical_dashboard_out_document.py | 108 ------- ...n_api_analytical_dashboard_out_includes.py | 231 ------------- .../json_api_analytical_dashboard_out_list.py | 118 ------- .../json_api_analytical_dashboard_out_meta.py | 111 ------- ...alytical_dashboard_out_meta_access_info.py | 88 ----- ..._analytical_dashboard_out_relationships.py | 144 --------- ...out_relationships_analytical_dashboards.py | 96 ------ ...ashboard_out_relationships_certified_by.py | 97 ------ ...ard_out_relationships_dashboard_plugins.py | 96 ------ ...al_dashboard_out_relationships_datasets.py | 96 ------ ...board_out_relationships_filter_contexts.py | 96 ------ ...ical_dashboard_out_relationships_labels.py | 96 ------ ...cal_dashboard_out_relationships_metrics.py | 96 ------ ...out_relationships_visualization_objects.py | 96 ------ ...api_analytical_dashboard_out_with_links.py | 130 -------- .../json_api_analytical_dashboard_patch.py | 112 ------- ...i_analytical_dashboard_patch_attributes.py | 99 ------ ...api_analytical_dashboard_patch_document.py | 92 ------ ...i_analytical_dashboard_post_optional_id.py | 115 ------- ...cal_dashboard_post_optional_id_document.py | 92 ------ ...api_analytical_dashboard_to_one_linkage.py | 132 -------- .../models/json_api_api_token_in.py | 106 ------ .../models/json_api_api_token_in_document.py | 92 ------ .../models/json_api_api_token_out.py | 112 ------- .../json_api_api_token_out_attributes.py | 88 ----- .../models/json_api_api_token_out_document.py | 98 ------ .../models/json_api_api_token_out_list.py | 108 ------- .../json_api_api_token_out_with_links.py | 118 ------- .../models/json_api_attribute_hierarchy_in.py | 112 ------- ...n_api_attribute_hierarchy_in_attributes.py | 97 ------ ...son_api_attribute_hierarchy_in_document.py | 92 ------ .../json_api_attribute_hierarchy_linkage.py | 98 ------ .../json_api_attribute_hierarchy_out.py | 124 ------- ..._api_attribute_hierarchy_out_attributes.py | 136 -------- ...on_api_attribute_hierarchy_out_document.py | 108 ------- ...on_api_attribute_hierarchy_out_includes.py | 141 -------- .../json_api_attribute_hierarchy_out_list.py | 118 ------- ...i_attribute_hierarchy_out_relationships.py | 103 ------ ..._hierarchy_out_relationships_attributes.py | 96 ------ ..._api_attribute_hierarchy_out_with_links.py | 130 -------- .../json_api_attribute_hierarchy_patch.py | 112 ------- ..._api_attribute_hierarchy_patch_document.py | 92 ------ .../models/json_api_attribute_linkage.py | 98 ------ .../models/json_api_attribute_out.py | 124 ------- .../json_api_attribute_out_attributes.py | 146 --------- .../models/json_api_attribute_out_document.py | 108 ------- .../models/json_api_attribute_out_includes.py | 156 --------- .../models/json_api_attribute_out_list.py | 118 ------- .../json_api_attribute_out_relationships.py | 110 ------- ...out_relationships_attribute_hierarchies.py | 96 ------ ...ttribute_out_relationships_default_view.py | 97 ------ .../json_api_attribute_out_with_links.py | 130 -------- .../models/json_api_attribute_patch.py | 118 ------- .../json_api_attribute_patch_attributes.py | 93 ------ .../json_api_attribute_patch_document.py | 92 ------ .../json_api_attribute_patch_relationships.py | 92 ------ .../json_api_attribute_to_one_linkage.py | 132 -------- .../models/json_api_automation_in.py | 118 ------- .../json_api_automation_in_attributes.py | 216 ------------- ...json_api_automation_in_attributes_alert.py | 124 ------- ...ributes_dashboard_tabular_exports_inner.py | 92 ------ ...in_attributes_external_recipients_inner.py | 88 ----- ...ation_in_attributes_image_exports_inner.py | 92 ------ ...n_api_automation_in_attributes_metadata.py | 111 ------- ...omation_in_attributes_raw_exports_inner.py | 92 ------ ...n_api_automation_in_attributes_schedule.py | 98 ------ ...tion_in_attributes_slides_exports_inner.py | 92 ------ ...ion_in_attributes_tabular_exports_inner.py | 92 ------ ...tion_in_attributes_visual_exports_inner.py | 92 ------ .../models/json_api_automation_in_document.py | 92 ------ .../json_api_automation_in_relationships.py | 110 ------- ...n_in_relationships_analytical_dashboard.py | 97 ------ ...ion_in_relationships_export_definitions.py | 96 ------ ...n_in_relationships_notification_channel.py | 97 ------ ..._automation_in_relationships_recipients.py | 96 ------ .../models/json_api_automation_linkage.py | 98 ------ .../models/json_api_automation_out.py | 124 ------- .../json_api_automation_out_attributes.py | 255 --------------- .../json_api_automation_out_document.py | 108 ------- .../json_api_automation_out_includes.py | 201 ------------ .../models/json_api_automation_out_list.py | 118 ------- .../json_api_automation_out_relationships.py | 127 -------- ...on_out_relationships_automation_results.py | 96 ------ .../json_api_automation_out_with_links.py | 130 -------- .../models/json_api_automation_patch.py | 118 ------- .../json_api_automation_patch_document.py | 92 ------ .../json_api_automation_result_linkage.py | 98 ------ .../models/json_api_automation_result_out.py | 118 ------- ...on_api_automation_result_out_attributes.py | 104 ------ .../json_api_automation_result_out_list.py | 118 ------- ...api_automation_result_out_relationships.py | 92 ------ ...ion_result_out_relationships_automation.py | 97 ------ ...on_api_automation_result_out_with_links.py | 124 ------- .../json_api_automation_to_one_linkage.py | 132 -------- .../models/json_api_color_palette_in.py | 112 ------- .../json_api_color_palette_in_attributes.py | 91 ------ .../json_api_color_palette_in_document.py | 92 ------ .../models/json_api_color_palette_out.py | 112 ------- .../json_api_color_palette_out_document.py | 98 ------ .../models/json_api_color_palette_out_list.py | 108 ------- .../json_api_color_palette_out_with_links.py | 118 ------- .../models/json_api_color_palette_patch.py | 112 ------- ...json_api_color_palette_patch_attributes.py | 91 ------ .../json_api_color_palette_patch_document.py | 92 ------ ...on_api_cookie_security_configuration_in.py | 112 ------- ...ie_security_configuration_in_attributes.py | 91 ------ ...okie_security_configuration_in_document.py | 92 ------ ...n_api_cookie_security_configuration_out.py | 112 ------- ...kie_security_configuration_out_document.py | 98 ------ ...api_cookie_security_configuration_patch.py | 112 ------- ...e_security_configuration_patch_document.py | 92 ------ .../models/json_api_csp_directive_in.py | 112 ------- .../json_api_csp_directive_in_attributes.py | 88 ----- .../json_api_csp_directive_in_document.py | 92 ------ .../models/json_api_csp_directive_out.py | 112 ------- .../json_api_csp_directive_out_document.py | 98 ------ .../models/json_api_csp_directive_out_list.py | 108 ------- .../json_api_csp_directive_out_with_links.py | 118 ------- .../models/json_api_csp_directive_patch.py | 112 ------- ...json_api_csp_directive_patch_attributes.py | 88 ----- .../json_api_csp_directive_patch_document.py | 92 ------ .../json_api_custom_application_setting_in.py | 112 ------- ...ustom_application_setting_in_attributes.py | 91 ------ ..._custom_application_setting_in_document.py | 92 ------ ...json_api_custom_application_setting_out.py | 118 ------- ...custom_application_setting_out_document.py | 98 ------ ...api_custom_application_setting_out_list.py | 108 ------- ...stom_application_setting_out_with_links.py | 124 ------- ...on_api_custom_application_setting_patch.py | 112 ------- ...om_application_setting_patch_attributes.py | 91 ------ ...stom_application_setting_patch_document.py | 92 ------ ...om_application_setting_post_optional_id.py | 115 ------- ...ation_setting_post_optional_id_document.py | 92 ------ .../json_api_custom_geo_collection_in.py | 112 ------- ...api_custom_geo_collection_in_attributes.py | 101 ------ ...n_api_custom_geo_collection_in_document.py | 92 ------ .../json_api_custom_geo_collection_out.py | 112 ------- ..._api_custom_geo_collection_out_document.py | 98 ------ ...json_api_custom_geo_collection_out_list.py | 108 ------- ...pi_custom_geo_collection_out_with_links.py | 118 ------- .../json_api_custom_geo_collection_patch.py | 112 ------- ...pi_custom_geo_collection_patch_document.py | 92 ------ .../models/json_api_dashboard_plugin_in.py | 112 ------- ...json_api_dashboard_plugin_in_attributes.py | 97 ------ .../json_api_dashboard_plugin_in_document.py | 92 ------ .../json_api_dashboard_plugin_linkage.py | 98 ------ .../models/json_api_dashboard_plugin_out.py | 124 ------- ...son_api_dashboard_plugin_out_attributes.py | 136 -------- .../json_api_dashboard_plugin_out_document.py | 108 ------- .../json_api_dashboard_plugin_out_list.py | 118 ------- ..._api_dashboard_plugin_out_relationships.py | 97 ------ ...son_api_dashboard_plugin_out_with_links.py | 130 -------- .../models/json_api_dashboard_plugin_patch.py | 112 ------- ...son_api_dashboard_plugin_patch_document.py | 92 ------ ...n_api_dashboard_plugin_post_optional_id.py | 115 ------- ...hboard_plugin_post_optional_id_document.py | 92 ------ .../json_api_data_source_identifier_out.py | 118 ------- ...i_data_source_identifier_out_attributes.py | 101 ------ ...api_data_source_identifier_out_document.py | 98 ------ ...son_api_data_source_identifier_out_list.py | 108 ------- ...son_api_data_source_identifier_out_meta.py | 99 ------ ...i_data_source_identifier_out_with_links.py | 124 ------- .../models/json_api_data_source_in.py | 112 ------- .../json_api_data_source_in_attributes.py | 207 ------------ ...a_source_in_attributes_parameters_inner.py | 90 ------ .../json_api_data_source_in_document.py | 92 ------ .../models/json_api_data_source_out.py | 118 ------- .../json_api_data_source_out_attributes.py | 204 ------------ .../json_api_data_source_out_document.py | 98 ------ .../models/json_api_data_source_out_list.py | 108 ------- .../json_api_data_source_out_with_links.py | 124 ------- .../models/json_api_data_source_patch.py | 112 ------- .../json_api_data_source_patch_attributes.py | 210 ------------ .../json_api_data_source_patch_document.py | 92 ------ .../models/json_api_dataset_linkage.py | 98 ------ .../models/json_api_dataset_out.py | 124 ------- .../models/json_api_dataset_out_attributes.py | 157 --------- ..._api_dataset_out_attributes_grain_inner.py | 98 ------ ...t_attributes_reference_properties_inner.py | 119 ------- .../json_api_dataset_out_attributes_sql.py | 90 ------ ...tes_workspace_data_filter_columns_inner.py | 98 ------ ..._workspace_data_filter_references_inner.py | 104 ------ .../models/json_api_dataset_out_document.py | 108 ------- .../models/json_api_dataset_out_includes.py | 186 ----------- .../models/json_api_dataset_out_list.py | 118 ------- .../json_api_dataset_out_relationships.py | 116 ------- ...aset_out_relationships_aggregated_facts.py | 96 ------ ...son_api_dataset_out_relationships_facts.py | 96 ------ ...ut_relationships_workspace_data_filters.py | 96 ------ .../models/json_api_dataset_out_with_links.py | 130 -------- .../models/json_api_dataset_patch.py | 112 ------- .../models/json_api_dataset_patch_document.py | 92 ------ .../models/json_api_dataset_to_one_linkage.py | 132 -------- .../models/json_api_entitlement_out.py | 112 ------- .../json_api_entitlement_out_attributes.py | 92 ------ .../json_api_entitlement_out_document.py | 98 ------ .../models/json_api_entitlement_out_list.py | 108 ------- .../json_api_entitlement_out_with_links.py | 118 ------- .../models/json_api_export_definition_in.py | 118 ------- ...son_api_export_definition_in_attributes.py | 101 ------ ...efinition_in_attributes_request_payload.py | 141 -------- .../json_api_export_definition_in_document.py | 92 ------ ..._api_export_definition_in_relationships.py | 98 ------ ...n_in_relationships_visualization_object.py | 97 ------ .../json_api_export_definition_linkage.py | 98 ------ .../models/json_api_export_definition_out.py | 124 ------- ...on_api_export_definition_out_attributes.py | 140 -------- ...json_api_export_definition_out_document.py | 108 ------- ...json_api_export_definition_out_includes.py | 171 ---------- .../json_api_export_definition_out_list.py | 118 ------- ...api_export_definition_out_relationships.py | 115 ------- ...on_api_export_definition_out_with_links.py | 130 -------- .../json_api_export_definition_patch.py | 118 ------- ...on_api_export_definition_patch_document.py | 92 ------ ..._api_export_definition_post_optional_id.py | 121 ------- ...rt_definition_post_optional_id_document.py | 92 ------ .../models/json_api_export_template_in.py | 112 ------- .../json_api_export_template_in_attributes.py | 111 ------- ...in_attributes_dashboard_slides_template.py | 141 -------- ...te_in_attributes_widget_slides_template.py | 108 ------- .../json_api_export_template_in_document.py | 92 ------ .../models/json_api_export_template_out.py | 112 ------- .../json_api_export_template_out_document.py | 98 ------ .../json_api_export_template_out_list.py | 108 ------- ...json_api_export_template_out_with_links.py | 118 ------- .../models/json_api_export_template_patch.py | 112 ------- ...on_api_export_template_patch_attributes.py | 111 ------- ...json_api_export_template_patch_document.py | 92 ------ ...on_api_export_template_post_optional_id.py | 115 ------- ...port_template_post_optional_id_document.py | 92 ------ .../models/json_api_fact_linkage.py | 98 ------ .../models/json_api_fact_out.py | 124 ------- .../models/json_api_fact_out_attributes.py | 116 ------- .../models/json_api_fact_out_document.py | 108 ------- .../models/json_api_fact_out_list.py | 118 ------- .../models/json_api_fact_out_relationships.py | 92 ------ .../models/json_api_fact_out_with_links.py | 130 -------- .../models/json_api_fact_patch.py | 112 ------- .../models/json_api_fact_patch_document.py | 92 ------ .../models/json_api_fact_to_one_linkage.py | 132 -------- .../models/json_api_filter_context_in.py | 112 ------- .../json_api_filter_context_in_attributes.py | 97 ------ .../json_api_filter_context_in_document.py | 92 ------ .../models/json_api_filter_context_linkage.py | 98 ------ .../models/json_api_filter_context_out.py | 124 ------- .../json_api_filter_context_out_document.py | 108 ------- .../json_api_filter_context_out_includes.py | 156 --------- .../json_api_filter_context_out_list.py | 118 ------- ...on_api_filter_context_out_relationships.py | 104 ------ .../json_api_filter_context_out_with_links.py | 130 -------- .../models/json_api_filter_context_patch.py | 112 ------- ...son_api_filter_context_patch_attributes.py | 97 ------ .../json_api_filter_context_patch_document.py | 92 ------ ...son_api_filter_context_post_optional_id.py | 115 ------- ...ilter_context_post_optional_id_document.py | 92 ------ .../models/json_api_filter_view_in.py | 118 ------- .../json_api_filter_view_in_attributes.py | 99 ------ .../json_api_filter_view_in_document.py | 92 ------ .../json_api_filter_view_in_relationships.py | 98 ------ ...n_api_filter_view_in_relationships_user.py | 97 ------ .../models/json_api_filter_view_out.py | 118 ------- .../json_api_filter_view_out_document.py | 108 ------- .../json_api_filter_view_out_includes.py | 141 -------- .../models/json_api_filter_view_out_list.py | 118 ------- .../json_api_filter_view_out_with_links.py | 124 ------- .../models/json_api_filter_view_patch.py | 118 ------- .../json_api_filter_view_patch_attributes.py | 99 ------ .../json_api_filter_view_patch_document.py | 92 ------ .../models/json_api_identity_provider_in.py | 112 ------- ...son_api_identity_provider_in_attributes.py | 125 -------- .../json_api_identity_provider_in_document.py | 92 ------ .../json_api_identity_provider_linkage.py | 98 ------ .../models/json_api_identity_provider_out.py | 112 ------- ...on_api_identity_provider_out_attributes.py | 121 ------- ...json_api_identity_provider_out_document.py | 98 ------ .../json_api_identity_provider_out_list.py | 108 ------- ...on_api_identity_provider_out_with_links.py | 118 ------- .../json_api_identity_provider_patch.py | 112 ------- ...on_api_identity_provider_patch_document.py | 92 ------ ...on_api_identity_provider_to_one_linkage.py | 132 -------- .../models/json_api_jwk_in.py | 112 ------- .../models/json_api_jwk_in_attributes.py | 92 ------ .../json_api_jwk_in_attributes_content.py | 126 -------- .../models/json_api_jwk_in_document.py | 92 ------ .../models/json_api_jwk_out.py | 112 ------- .../models/json_api_jwk_out_document.py | 98 ------ .../models/json_api_jwk_out_list.py | 108 ------- .../models/json_api_jwk_out_with_links.py | 118 ------- .../models/json_api_jwk_patch.py | 112 ------- .../models/json_api_jwk_patch_document.py | 92 ------ .../json_api_knowledge_recommendation_in.py | 118 ------- ..._knowledge_recommendation_in_attributes.py | 152 --------- ...pi_knowledge_recommendation_in_document.py | 92 ------ ...owledge_recommendation_in_relationships.py | 98 ------ ..._recommendation_in_relationships_metric.py | 97 ------ .../json_api_knowledge_recommendation_out.py | 124 ------- ...knowledge_recommendation_out_attributes.py | 155 --------- ...i_knowledge_recommendation_out_document.py | 108 ------- ...i_knowledge_recommendation_out_includes.py | 141 -------- ...n_api_knowledge_recommendation_out_list.py | 118 ------- ...wledge_recommendation_out_relationships.py | 98 ------ ...knowledge_recommendation_out_with_links.py | 130 -------- ...json_api_knowledge_recommendation_patch.py | 118 ------- ...owledge_recommendation_patch_attributes.py | 158 --------- ...knowledge_recommendation_patch_document.py | 92 ------ ...owledge_recommendation_post_optional_id.py | 121 ------- ...ecommendation_post_optional_id_document.py | 92 ------ .../models/json_api_label_linkage.py | 98 ------ .../models/json_api_label_out.py | 124 ------- .../models/json_api_label_out_attributes.py | 149 --------- ...pi_label_out_attributes_geo_area_config.py | 92 ------ ...label_out_attributes_translations_inner.py | 90 ------ .../models/json_api_label_out_document.py | 108 ------- .../models/json_api_label_out_list.py | 118 ------- .../json_api_label_out_relationships.py | 92 ------ ...n_api_label_out_relationships_attribute.py | 97 ------ .../models/json_api_label_out_with_links.py | 130 -------- .../models/json_api_label_patch.py | 112 ------- .../models/json_api_label_patch_document.py | 92 ------ .../models/json_api_label_to_one_linkage.py | 132 -------- .../models/json_api_llm_endpoint_in.py | 112 ------- .../json_api_llm_endpoint_in_attributes.py | 120 ------- .../json_api_llm_endpoint_in_document.py | 92 ------ .../models/json_api_llm_endpoint_out.py | 112 ------- .../json_api_llm_endpoint_out_attributes.py | 118 ------- .../json_api_llm_endpoint_out_document.py | 98 ------ .../models/json_api_llm_endpoint_out_list.py | 108 ------- .../json_api_llm_endpoint_out_with_links.py | 118 ------- .../models/json_api_llm_endpoint_patch.py | 112 ------- .../json_api_llm_endpoint_patch_attributes.py | 120 ------- .../json_api_llm_endpoint_patch_document.py | 92 ------ .../models/json_api_llm_provider_in.py | 112 ------- .../json_api_llm_provider_in_attributes.py | 129 -------- ...llm_provider_in_attributes_models_inner.py | 99 ------ ..._provider_in_attributes_provider_config.py | 156 --------- .../json_api_llm_provider_in_document.py | 92 ------ .../models/json_api_llm_provider_out.py | 112 ------- .../json_api_llm_provider_out_document.py | 98 ------ .../models/json_api_llm_provider_out_list.py | 108 ------- .../json_api_llm_provider_out_with_links.py | 118 ------- .../models/json_api_llm_provider_patch.py | 112 ------- .../json_api_llm_provider_patch_attributes.py | 129 -------- .../json_api_llm_provider_patch_document.py | 92 ------ .../models/json_api_memory_item_in.py | 112 ------- .../json_api_memory_item_in_attributes.py | 111 ------- .../json_api_memory_item_in_document.py | 92 ------ .../models/json_api_memory_item_out.py | 124 ------- .../json_api_memory_item_out_attributes.py | 150 --------- .../json_api_memory_item_out_document.py | 108 ------- .../models/json_api_memory_item_out_list.py | 118 ------- .../json_api_memory_item_out_with_links.py | 130 -------- .../models/json_api_memory_item_patch.py | 112 ------- .../json_api_memory_item_patch_attributes.py | 114 ------- .../json_api_memory_item_patch_document.py | 92 ------ .../json_api_memory_item_post_optional_id.py | 115 ------- ...i_memory_item_post_optional_id_document.py | 92 ------ .../models/json_api_metric_in.py | 112 ------- .../models/json_api_metric_in_attributes.py | 105 ------ .../json_api_metric_in_attributes_content.py | 109 ------- .../models/json_api_metric_in_document.py | 92 ------ .../models/json_api_metric_linkage.py | 98 ------ .../models/json_api_metric_out.py | 124 ------- .../models/json_api_metric_out_attributes.py | 183 ----------- .../models/json_api_metric_out_document.py | 108 ------- .../models/json_api_metric_out_includes.py | 201 ------------ .../models/json_api_metric_out_list.py | 118 ------- .../json_api_metric_out_relationships.py | 132 -------- .../models/json_api_metric_out_with_links.py | 130 -------- .../models/json_api_metric_patch.py | 112 ------- .../json_api_metric_patch_attributes.py | 105 ------ .../models/json_api_metric_patch_document.py | 92 ------ .../json_api_metric_post_optional_id.py | 115 ------- ...on_api_metric_post_optional_id_document.py | 92 ------ .../models/json_api_metric_to_one_linkage.py | 132 -------- ...api_notification_channel_identifier_out.py | 112 ------- ...ation_channel_identifier_out_attributes.py | 127 -------- ...ication_channel_identifier_out_document.py | 98 ------ ...otification_channel_identifier_out_list.py | 108 ------- ...ation_channel_identifier_out_with_links.py | 118 ------- .../json_api_notification_channel_in.py | 112 ------- ..._api_notification_channel_in_attributes.py | 150 --------- ...ation_channel_in_attributes_destination.py | 171 ---------- ...on_api_notification_channel_in_document.py | 92 ------ .../json_api_notification_channel_linkage.py | 98 ------ .../json_api_notification_channel_out.py | 112 ------- ...api_notification_channel_out_attributes.py | 168 ---------- ...n_api_notification_channel_out_document.py | 98 ------ .../json_api_notification_channel_out_list.py | 108 ------- ...api_notification_channel_out_with_links.py | 118 ------- .../json_api_notification_channel_patch.py | 112 ------- ...api_notification_channel_patch_document.py | 92 ------ ...i_notification_channel_post_optional_id.py | 115 ------- ...ation_channel_post_optional_id_document.py | 92 ------ ...api_notification_channel_to_one_linkage.py | 132 -------- .../models/json_api_organization_in.py | 118 ------- .../json_api_organization_in_attributes.py | 112 ------- .../json_api_organization_in_document.py | 92 ------ .../json_api_organization_in_relationships.py | 92 ------ ...tion_in_relationships_identity_provider.py | 97 ------ .../models/json_api_organization_out.py | 124 ------- .../json_api_organization_out_attributes.py | 132 -------- ...anization_out_attributes_cache_settings.py | 102 ------ .../json_api_organization_out_document.py | 108 ------- .../json_api_organization_out_includes.py | 156 --------- .../models/json_api_organization_out_meta.py | 99 ------ ...json_api_organization_out_relationships.py | 104 ------ ..._out_relationships_bootstrap_user_group.py | 97 ------ .../models/json_api_organization_patch.py | 118 ------- .../json_api_organization_patch_document.py | 92 ------ .../json_api_organization_setting_in.py | 112 ------- ..._api_organization_setting_in_attributes.py | 101 ------ ...on_api_organization_setting_in_document.py | 92 ------ .../json_api_organization_setting_out.py | 112 ------- ...n_api_organization_setting_out_document.py | 98 ------ .../json_api_organization_setting_out_list.py | 108 ------- ...api_organization_setting_out_with_links.py | 118 ------- .../json_api_organization_setting_patch.py | 112 ------- ...api_organization_setting_patch_document.py | 92 ------ .../models/json_api_theme_in.py | 112 ------- .../models/json_api_theme_in_document.py | 92 ------ .../models/json_api_theme_out.py | 112 ------- .../models/json_api_theme_out_document.py | 98 ------ .../models/json_api_theme_out_list.py | 108 ------- .../models/json_api_theme_out_with_links.py | 118 ------- .../models/json_api_theme_patch.py | 112 ------- .../models/json_api_theme_patch_document.py | 92 ------ .../models/json_api_user_data_filter_in.py | 118 ------- ...json_api_user_data_filter_in_attributes.py | 97 ------ .../json_api_user_data_filter_in_document.py | 92 ------ ...n_api_user_data_filter_in_relationships.py | 98 ------ .../models/json_api_user_data_filter_out.py | 124 ------- .../json_api_user_data_filter_out_document.py | 108 ------- .../json_api_user_data_filter_out_includes.py | 216 ------------- .../json_api_user_data_filter_out_list.py | 118 ------- ..._api_user_data_filter_out_relationships.py | 128 -------- ...son_api_user_data_filter_out_with_links.py | 130 -------- .../models/json_api_user_data_filter_patch.py | 118 ------- ...n_api_user_data_filter_patch_attributes.py | 97 ------ ...son_api_user_data_filter_patch_document.py | 92 ------ ...n_api_user_data_filter_post_optional_id.py | 121 ------- ...r_data_filter_post_optional_id_document.py | 92 ------ .../models/json_api_user_group_in.py | 118 ------- .../json_api_user_group_in_attributes.py | 89 ----- .../models/json_api_user_group_in_document.py | 92 ------ .../json_api_user_group_in_relationships.py | 92 ------ ...api_user_group_in_relationships_parents.py | 96 ------ .../models/json_api_user_group_linkage.py | 98 ------ .../models/json_api_user_group_out.py | 118 ------- .../json_api_user_group_out_document.py | 108 ------- .../models/json_api_user_group_out_list.py | 117 ------- .../json_api_user_group_out_with_links.py | 124 ------- .../models/json_api_user_group_patch.py | 118 ------- .../json_api_user_group_patch_document.py | 92 ------ .../json_api_user_group_to_one_linkage.py | 132 -------- .../json_api_user_identifier_linkage.py | 98 ------ .../models/json_api_user_identifier_out.py | 112 ------- ...json_api_user_identifier_out_attributes.py | 93 ------ .../json_api_user_identifier_out_document.py | 98 ------ .../json_api_user_identifier_out_list.py | 108 ------- ...json_api_user_identifier_out_with_links.py | 118 ------- ...json_api_user_identifier_to_one_linkage.py | 132 -------- .../models/json_api_user_in.py | 118 ------- .../models/json_api_user_in_attributes.py | 95 ------ .../models/json_api_user_in_document.py | 92 ------ .../models/json_api_user_in_relationships.py | 92 ------ .../models/json_api_user_linkage.py | 98 ------ .../models/json_api_user_out.py | 118 ------- .../models/json_api_user_out_document.py | 108 ------- .../models/json_api_user_out_list.py | 118 ------- .../models/json_api_user_out_with_links.py | 124 ------- .../models/json_api_user_patch.py | 118 ------- .../models/json_api_user_patch_document.py | 92 ------ .../models/json_api_user_setting_in.py | 112 ------- .../json_api_user_setting_in_document.py | 92 ------ .../models/json_api_user_setting_out.py | 112 ------- .../json_api_user_setting_out_document.py | 98 ------ .../models/json_api_user_setting_out_list.py | 108 ------- .../json_api_user_setting_out_with_links.py | 118 ------- .../models/json_api_user_to_one_linkage.py | 132 -------- .../json_api_visualization_object_in.py | 112 ------- ..._api_visualization_object_in_attributes.py | 99 ------ ...on_api_visualization_object_in_document.py | 92 ------ .../json_api_visualization_object_linkage.py | 98 ------ .../json_api_visualization_object_out.py | 124 ------- ...api_visualization_object_out_attributes.py | 177 ---------- ...n_api_visualization_object_out_document.py | 108 ------- .../json_api_visualization_object_out_list.py | 118 ------- ...api_visualization_object_out_with_links.py | 130 -------- .../json_api_visualization_object_patch.py | 112 ------- ...i_visualization_object_patch_attributes.py | 99 ------ ...api_visualization_object_patch_document.py | 92 ------ ...i_visualization_object_post_optional_id.py | 115 ------- ...zation_object_post_optional_id_document.py | 92 ------ ...api_visualization_object_to_one_linkage.py | 132 -------- .../json_api_workspace_automation_out.py | 118 ------- ...api_workspace_automation_out_attributes.py | 221 ------------- ...n_api_workspace_automation_out_includes.py | 216 ------------- .../json_api_workspace_automation_out_list.py | 118 ------- ..._workspace_automation_out_relationships.py | 133 -------- ..._automation_out_relationships_workspace.py | 97 ------ ...api_workspace_automation_out_with_links.py | 124 ------- .../json_api_workspace_data_filter_in.py | 118 ------- ...api_workspace_data_filter_in_attributes.py | 93 ------ ...n_api_workspace_data_filter_in_document.py | 92 ------ ..._workspace_data_filter_in_relationships.py | 92 ------ ...filter_in_relationships_filter_settings.py | 96 ------ .../json_api_workspace_data_filter_linkage.py | 98 ------ .../json_api_workspace_data_filter_out.py | 124 ------- ..._api_workspace_data_filter_out_document.py | 108 ------- ...json_api_workspace_data_filter_out_list.py | 118 ------- ...pi_workspace_data_filter_out_with_links.py | 130 -------- .../json_api_workspace_data_filter_patch.py | 118 ------- ...pi_workspace_data_filter_patch_document.py | 92 ------ ...on_api_workspace_data_filter_setting_in.py | 118 ------- ...space_data_filter_setting_in_attributes.py | 93 ------ ...rkspace_data_filter_setting_in_document.py | 92 ------ ...ce_data_filter_setting_in_relationships.py | 92 ------ ..._in_relationships_workspace_data_filter.py | 97 ------ ...i_workspace_data_filter_setting_linkage.py | 98 ------ ...n_api_workspace_data_filter_setting_out.py | 124 ------- ...kspace_data_filter_setting_out_document.py | 108 ------- ..._workspace_data_filter_setting_out_list.py | 118 ------- ...pace_data_filter_setting_out_with_links.py | 130 -------- ...api_workspace_data_filter_setting_patch.py | 118 ------- ...pace_data_filter_setting_patch_document.py | 92 ------ ...pi_workspace_data_filter_to_one_linkage.py | 132 -------- .../models/json_api_workspace_in.py | 118 ------- .../json_api_workspace_in_attributes.py | 140 -------- ...api_workspace_in_attributes_data_source.py | 90 ------ .../models/json_api_workspace_in_document.py | 92 ------ .../json_api_workspace_in_relationships.py | 92 ------ .../models/json_api_workspace_linkage.py | 98 ------ .../models/json_api_workspace_out.py | 124 ------- .../models/json_api_workspace_out_document.py | 108 ------- .../models/json_api_workspace_out_list.py | 117 ------- .../models/json_api_workspace_out_meta.py | 117 ------- .../json_api_workspace_out_meta_config.py | 92 ------ .../json_api_workspace_out_meta_data_model.py | 88 ----- .../json_api_workspace_out_meta_hierarchy.py | 88 ----- .../json_api_workspace_out_with_links.py | 130 -------- .../models/json_api_workspace_patch.py | 118 ------- .../json_api_workspace_patch_document.py | 92 ------ .../models/json_api_workspace_setting_in.py | 112 ------- .../json_api_workspace_setting_in_document.py | 92 ------ .../models/json_api_workspace_setting_out.py | 118 ------- ...json_api_workspace_setting_out_document.py | 98 ------ .../json_api_workspace_setting_out_list.py | 108 ------- ...on_api_workspace_setting_out_with_links.py | 124 ------- .../json_api_workspace_setting_patch.py | 112 ------- ...on_api_workspace_setting_patch_document.py | 92 ------ ..._api_workspace_setting_post_optional_id.py | 115 ------- ...space_setting_post_optional_id_document.py | 92 ------ .../json_api_workspace_to_one_linkage.py | 132 -------- .../models/key_drivers_dimension.py | 133 -------- .../models/key_drivers_request.py | 114 ------- .../models/key_drivers_response.py | 102 ------ .../models/key_drivers_result.py | 88 ----- .../models/knowledge_document_metadata_dto.py | 106 ------ .../models/knowledge_search_result_dto.py | 104 ------ .../models/label_identifier.py | 106 ------ .../list_database_instances_response.py | 98 ------ .../list_knowledge_documents_response_dto.py | 100 ------ .../gooddata_api_client/models/list_links.py | 90 ------ .../models/list_services_response.py | 98 ------ .../gooddata_api_client/models/llm_model.py | 99 ------ .../models/llm_provider_auth.py | 88 ----- .../models/llm_provider_config.py | 156 --------- .../models/local_identifier.py | 103 ------ .../models/locale_request.py | 88 ----- ...age_dashboard_permissions_request_inner.py | 141 -------- .../models/match_attribute_filter.py | 92 ------ ...attribute_filter_match_attribute_filter.py | 112 ------- .../models/measure_definition.py | 171 ---------- .../models/measure_execution_result_header.py | 92 ------ .../models/measure_group_headers.py | 96 ------ .../models/measure_header.py | 92 ------ .../models/measure_item.py | 102 ------ .../models/measure_item_definition.py | 201 ------------ .../models/measure_result_header.py | 88 ----- .../models/measure_value_condition.py | 141 -------- .../models/measure_value_filter.py | 156 --------- .../models/memory_item_created_by_users.py | 98 ------ .../models/memory_item_user.py | 92 ------ .../gooddata_api_client/models/metric.py | 113 ------- .../models/metric_definition_override.py | 98 ------ .../models/metric_record.py | 90 ------ .../models/metric_value_change.py | 108 ------- .../models/model_test_result.py | 92 ------ .../models/negative_attribute_filter.py | 92 ------ ...ribute_filter_negative_attribute_filter.py | 102 ------ .../gooddata_api_client/models/note.py | 109 ------- .../gooddata_api_client/models/notes.py | 96 ------ .../models/notification.py | 103 ------ .../notification_channel_destination.py | 171 ---------- .../models/notification_content.py | 111 ------- .../models/notification_data.py | 144 --------- .../models/notification_filter.py | 90 ------ .../models/notifications.py | 102 ------ .../models/notifications_meta.py | 92 ------ .../models/notifications_meta_total.py | 90 ------ .../models/object_links.py | 88 ----- .../models/object_links_container.py | 92 ------ .../models/open_ai_api_key_auth.py | 104 ------ .../models/open_ai_provider_auth.py | 126 -------- .../models/open_ai_provider_config.py | 117 ------- .../gooddata_api_client/models/operation.py | 124 ------- .../models/operation_error.py | 92 ------ .../organization_automation_identifier.py | 90 ------ ...tion_automation_management_bulk_request.py | 96 ------ .../organization_permission_assignment.py | 102 ------ .../models/outlier_detection_request.py | 146 --------- .../models/outlier_detection_response.py | 92 ------ .../models/outlier_detection_result.py | 100 ------ .../gooddata_api_client/models/over.py | 96 ------ .../models/page_metadata.py | 94 ------ .../gooddata_api_client/models/paging.py | 94 ------ .../gooddata_api_client/models/parameter.py | 90 ------ .../patch_knowledge_document_request_dto.py | 92 ------ .../models/pdf_table_style.py | 98 ------ .../models/pdf_table_style_property.py | 90 ------ .../models/pdm_ldm_request.py | 116 ------- .../gooddata_api_client/models/pdm_sql.py | 100 ------ .../models/pending_operation.py | 90 ------ .../models/permissions_assignment.py | 116 ------- .../models/permissions_for_assignee.py | 102 ------ .../models/permissions_for_assignee_rule.py | 102 ------ .../models/platform_usage.py | 98 ------ .../models/platform_usage_request.py | 96 ------ .../gooddata_api_client/models/pop_dataset.py | 94 ------ .../models/pop_dataset_measure_definition.py | 92 ------ ...sure_definition_previous_period_measure.py | 102 ------ .../gooddata_api_client/models/pop_date.py | 94 ------ .../models/pop_date_measure_definition.py | 92 ------ ..._measure_definition_over_period_measure.py | 102 ------ .../models/pop_measure_definition.py | 141 -------- .../models/positive_attribute_filter.py | 92 ------ ...ribute_filter_positive_attribute_filter.py | 102 ------ .../provision_database_instance_request.py | 90 ------ .../models/quality_issue.py | 112 ------- .../models/quality_issue_object.py | 94 ------ ...lity_issues_calculation_status_response.py | 108 ------- .../gooddata_api_client/models/range.py | 113 ------- .../models/range_condition.py | 92 ------ .../models/range_condition_range.py | 100 ------ .../models/range_measure_value_filter.py | 92 ------ ...value_filter_range_measure_value_filter.py | 121 ------- .../models/range_wrapper.py | 92 ------ .../models/ranking_filter.py | 92 ------ .../models/ranking_filter_ranking_filter.py | 121 ------- .../models/raw_custom_label.py | 88 ----- .../models/raw_custom_metric.py | 88 ----- .../models/raw_custom_override.py | 116 ------- .../models/raw_export_automation_request.py | 136 -------- .../models/raw_export_request.py | 129 -------- .../gooddata_api_client/models/reasoning.py | 98 ------ .../models/reasoning_step.py | 98 ------ .../models/reference_identifier.py | 106 ------ .../models/reference_source_column.py | 111 ------- .../gooddata_api_client/models/relative.py | 108 ------- .../models/relative_bounded_date_filter.py | 100 ------ .../models/relative_date_filter.py | 92 ------ ...lative_date_filter_relative_date_filter.py | 129 -------- .../models/relative_wrapper.py | 92 ------ .../models/resolve_settings_request.py | 88 ----- .../models/resolved_llm_endpoint.py | 90 ------ .../models/resolved_llm_endpoints.py | 96 ------ .../models/resolved_setting.py | 108 ------- .../models/rest_api_identifier.py | 98 ------ .../models/result_cache_metadata.py | 106 ------ .../models/result_dimension.py | 98 ------ .../models/result_dimension_header.py | 173 ---------- .../gooddata_api_client/models/result_spec.py | 106 ------ .../models/route_result.py | 98 ------ .../models/rsa_specification.py | 134 -------- .../models/rule_permission.py | 98 ------ .../models/run_service_command_request.py | 100 ------ .../models/running_section.py | 100 ------ .../models/saved_visualization.py | 90 ------ .../models/scan_request.py | 98 ------ .../models/scan_result_pdm.py | 102 ------ .../models/scan_sql_request.py | 88 ----- .../models/scan_sql_response.py | 98 ------ .../models/search_knowledge_response_dto.py | 102 ------ .../models/search_relationship_object.py | 102 ------ .../models/search_request.py | 128 -------- .../models/search_result.py | 108 ------- .../models/search_result_object.py | 115 ------- .../models/search_statistics_dto.py | 90 ------ .../models/section_slide_template.py | 109 ------- .../models/service_info.py | 90 ------ .../models/set_certification_request.py | 123 ------- .../gooddata_api_client/models/settings.py | 147 --------- .../models/simple_measure_definition.py | 92 ------ .../simple_measure_definition_measure.py | 117 ------- .../gooddata_api_client/models/skeleton.py | 90 ------ .../models/slides_export_request.py | 119 ------- .../models/smart_function_response.py | 92 ------ .../gooddata_api_client/models/smtp.py | 119 ------- .../gooddata_api_client/models/sort_key.py | 156 --------- .../models/sort_key_attribute.py | 92 ------ .../models/sort_key_attribute_attribute.py | 114 ------- .../models/sort_key_total.py | 92 ------ .../models/sort_key_total_total.py | 107 ------- .../models/sort_key_value.py | 92 ------ .../models/sort_key_value_value.py | 105 ------ .../gooddata_api_client/models/sql_column.py | 100 ------ .../gooddata_api_client/models/sql_query.py | 88 ----- .../models/succeeded_operation.py | 92 ------ .../gooddata_api_client/models/suggestion.py | 90 ------ .../switch_identity_provider_request.py | 88 ----- .../gooddata_api_client/models/table.py | 88 ----- .../models/table_override.py | 98 ------ .../models/table_warning.py | 100 ------ .../models/tabular_export_request.py | 125 -------- .../models/test_definition_request.py | 124 ------- .../models/test_destination_request.py | 108 ------- .../test_llm_provider_definition_request.py | 102 ------ ...ider_definition_request_provider_config.py | 156 --------- .../models/test_llm_provider_response.py | 100 ------ .../models/test_notification.py | 90 ------ .../models/test_query_duration.py | 90 ------ .../models/test_request.py | 114 ------- .../models/test_response.py | 96 ------ .../gooddata_api_client/models/thought.py | 88 ----- .../gooddata_api_client/models/total.py | 110 ------- .../models/total_dimension.py | 98 ------ .../models/total_execution_result_header.py | 92 ------ .../models/total_result_header.py | 88 ----- .../models/trigger_automation_request.py | 92 ------ ...ger_quality_issues_calculation_response.py | 98 ------ .../upsert_knowledge_document_request_dto.py | 96 ------ .../upsert_knowledge_document_response_dto.py | 94 ------ .../models/user_assignee.py | 92 ------ .../models/user_context.py | 92 ------ .../models/user_group_assignee.py | 90 ------ .../models/user_group_identifier.py | 90 ------ .../models/user_group_permission.py | 100 ------ ...ement_data_source_permission_assignment.py | 102 ------ .../user_management_permission_assignments.py | 106 ------ .../user_management_user_group_member.py | 92 ------ .../user_management_user_group_members.py | 96 ------ .../models/user_management_user_groups.py | 98 ------ .../user_management_user_groups_item.py | 114 ------- .../models/user_management_users.py | 98 ------ .../models/user_management_users_item.py | 124 ------- ...agement_workspace_permission_assignment.py | 112 ------- .../models/user_permission.py | 102 ------ .../models/validate_by_item.py | 98 ------ .../validate_llm_endpoint_by_id_request.py | 96 ------ .../models/validate_llm_endpoint_request.py | 96 ------ .../models/validate_llm_endpoint_response.py | 90 ------ .../gooddata_api_client/models/value.py | 88 ----- .../models/visible_filter.py | 92 ------ .../models/visual_export_request.py | 92 ------ .../models/visualization_config.py | 110 ------- .../gooddata_api_client/models/webhook.py | 141 -------- .../models/webhook_automation_info.py | 96 ------ .../models/webhook_message.py | 105 ------ .../models/webhook_message_data.py | 179 ----------- .../models/webhook_recipient.py | 90 ------ .../what_if_measure_adjustment_config.py | 92 ------ .../models/what_if_scenario_config.py | 98 ------ .../models/what_if_scenario_item.py | 98 ------ .../models/widget_slides_template.py | 108 ------- .../models/workspace_automation_identifier.py | 88 ----- ...pace_automation_management_bulk_request.py | 96 ------ .../models/workspace_data_source.py | 90 ------ .../models/workspace_identifier.py | 106 ------ .../models/workspace_permission_assignment.py | 118 ------- .../models/workspace_user.py | 92 ------ .../models/workspace_user_group.py | 90 ------ .../models/workspace_user_groups.py | 98 ------ .../models/workspace_users.py | 98 ------ .../gooddata_api_client/models/xliff.py | 106 ------ 1146 files changed, 1 insertion(+), 126788 deletions(-) delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_analytics_model.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_attribute_hierarchy.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_container_widget.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter_from.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard_permissions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard_plugin_link.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard_with_tabs.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dashboard_without_tabs.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_dataset_primary_key.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_date_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_field.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_filter_state.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_geo_area_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_geo_collection_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_label.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_label_translation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_logical_model.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_metric.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_plugin.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_query.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_query_fields_value.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_query_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_reference.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_reference_source.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_rich_text_widget.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_section.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_tab.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_basic_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_bubble_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_dependency_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_geo_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_layer.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_scatter_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_stacked_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_switcher_widget.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_table_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_trend_buckets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_visualization_widget.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_widget.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_widget_size.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aac_workspace_data_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/absolute_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/absolute_date_filter_absolute_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/abstract_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/active_object_identification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/ad_hoc_automation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_cancel_tokens.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_execution.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_execution_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_filters_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_local_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_query.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_valid_objects_query.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/afm_valid_objects_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/alert_afm.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/alert_condition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/alert_condition_operand.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/alert_description.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/alert_evaluation_row.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/all_time_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/all_time_date_filter_all_time_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/allowed_relationship_type.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/analytics_catalog_created_by.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/analytics_catalog_tags.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/analytics_catalog_user.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/anomaly_detection.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/anomaly_detection_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/anomaly_detection_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/anomaly_detection_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/anomaly_detection_wrapper.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/api_entitlement.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/arithmetic_measure.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition_arithmetic_measure.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/assignee_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/assignee_rule.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_elements.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_elements_by_ref.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_elements_by_value.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_execution_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_filter_by_date.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_filter_elements.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_filter_parent.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_format.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_header_attribute_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_negative_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_positive_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/attribute_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_alert.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_alert_condition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_dashboard_tabular_export.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_external_recipient.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_image_export.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_metadata.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_notification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_raw_export.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_schedule.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_slides_export.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_tabular_export.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/automation_visual_export.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/available_assignees.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aws_bedrock_access_key_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/aws_bedrock_provider_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/azure_foundry_api_key_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/bedrock_provider_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/bounded_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/change_analysis_params.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/change_analysis_params_filters_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/change_analysis_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/change_analysis_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/change_analysis_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/chat_history_interaction.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/chat_history_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/chat_history_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/chat_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/chat_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/chat_usage_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/clustering_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/clustering_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/clustering_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_override.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_statistic.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_statistic_warning.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_statistics_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_statistics_request_from.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_statistics_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/column_warning.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/comparison.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/comparison_condition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/comparison_condition_comparison.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter_comparison_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/comparison_wrapper.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter_compound_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/content_slide_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/cover_slide_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/create_knowledge_document_request_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/create_knowledge_document_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/created_visualization.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/created_visualization_filters_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/created_visualizations.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/custom_label.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/custom_metric.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/custom_override.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_date_filter_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_export_settings.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_permissions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_permissions_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_slides_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request_v2.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/data_column_locator.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/data_column_locators.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/data_source_parameter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/data_source_permission_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/data_source_schemata.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/data_source_table_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/database_instance.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dataset_grain.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dataset_reference_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dataset_workspace_data_filter_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/date_absolute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/date_relative_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/date_value.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_aggregated_fact.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_extension.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee_rule.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permissions_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytics.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_analytics_layer.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_attribute.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_attribute_hierarchy.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_automation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_color_palette.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_column.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_csp_directive.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_custom_application_setting.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collection.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collections.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_dashboard_plugin.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_data_source.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_data_source_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_data_source_permissions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_data_sources.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_dataset_extension.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_dataset_sql.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_date_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_export_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_export_definition_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_export_definition_request_payload.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_export_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_export_templates.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_fact.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_filter_context.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_filter_view.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_identity_provider.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_identity_provider_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_jwk.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_jwk_specification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_label.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_label_translation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_ldm.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_memory_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_metric.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_model.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_notification_channel.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_destination.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_notification_channels.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_organization.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_organization_info.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_organization_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_reference.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_reference_source.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_rsa_specification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_setting.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_single_workspace_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_source_fact_reference.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_table.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_tables.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_theme.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_data_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_data_filters.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_group.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_group_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_group_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_group_permissions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_groups.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_user_permissions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_users.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_users_user_groups.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_visualization_object.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_column.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_references.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_setting.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filters.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_hierarchy_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_model.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspace_permissions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/declarative_workspaces.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/default_smtp.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/delete_knowledge_document_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dependent_entities_graph.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dependent_entities_node.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dependent_entities_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dependent_entities_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/depends_on.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/depends_on_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dim_attribute.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dimension.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/dimension_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/element.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/elements_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/elements_request_depends_on_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/elements_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/entitlements_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/entity_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/entity_search_body.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/entity_search_page.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/entity_search_sort.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_result_data_source_message.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_result_grand_total.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_result_metadata.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_result_paging.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/execution_settings.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/export_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/export_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/fact_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/failed_operation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/file.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/filter_by.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/filter_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/filter_definition_for_simple_measure.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/forecast_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/forecast_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/forecast_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/found_objects.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/frequency.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/frequency_bucket.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/frequency_properties.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/generate_description_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/generate_description_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/generate_ldm_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/generate_title_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/generate_title_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/geo_area_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/geo_collection_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/get_ai_lake_operation200_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/get_image_export202_response_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/get_quality_issues_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/grain_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/granted_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/granularities_formatting.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/header_group.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/hierarchy_object_identification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/histogram.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/histogram_bucket.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/histogram_properties.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/identifier_duplications.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/identifier_ref.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/identifier_ref_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/image_export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/in_platform.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/inline_filter_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/inline_filter_definition_inline.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/inline_measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/inline_measure_definition_inline.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/intro_slide_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta_origin.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_source_fact.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta_access_info.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_analytical_dashboards.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_certified_by.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_dashboard_plugins.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_datasets.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_filter_contexts.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_labels.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_metrics.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_visualization_objects.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_attribute_hierarchies.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_default_view.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_attribute_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_alert.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_dashboard_tabular_exports_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_external_recipients_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_image_exports_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_metadata.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_raw_exports_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_schedule.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_slides_exports_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_tabular_exports_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_visual_exports_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_analytical_dashboard.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_export_definitions.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_notification_channel.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_recipients.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships_automation_results.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships_automation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_automation_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes_parameters_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_grain_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_reference_properties_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_sql.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_columns_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_references_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_aggregated_facts.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_facts.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_workspace_data_filters.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_dataset_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes_request_payload.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships_visualization_object.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_dashboard_slides_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_widget_slides_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_fact_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships_user.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes_content.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships_metric.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_geo_area_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_translations_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships_attribute.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_label_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_models_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_provider_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes_content.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_metric_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes_destination.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships_identity_provider.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes_cache_settings.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships_bootstrap_user_group.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_theme_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships_parents.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_group_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_user_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_includes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships_workspace.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships_filter_settings.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships_workspace_data_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes_data_source.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_relationships.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_data_model.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_hierarchy.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_list.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_with_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id_document.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/json_api_workspace_to_one_linkage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/key_drivers_dimension.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/key_drivers_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/key_drivers_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/key_drivers_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/knowledge_document_metadata_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/knowledge_search_result_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/label_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/list_database_instances_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/list_knowledge_documents_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/list_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/list_services_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/llm_model.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/llm_provider_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/llm_provider_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/local_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/locale_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/manage_dashboard_permissions_request_inner.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/match_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/match_attribute_filter_match_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_execution_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_group_headers.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_item_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_value_condition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/memory_item_created_by_users.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/memory_item_user.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/metric.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/metric_definition_override.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/metric_record.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/metric_value_change.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/model_test_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/negative_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/negative_attribute_filter_negative_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/note.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notes.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notification_channel_destination.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notification_content.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notification_data.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notification_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notifications.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notifications_meta.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/notifications_meta_total.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/object_links.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/object_links_container.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/open_ai_api_key_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/open_ai_provider_auth.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/open_ai_provider_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/operation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/operation_error.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/organization_automation_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/organization_automation_management_bulk_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/organization_permission_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/outlier_detection_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/outlier_detection_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/outlier_detection_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/over.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/page_metadata.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/paging.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/parameter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/patch_knowledge_document_request_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pdf_table_style.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pdf_table_style_property.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pdm_ldm_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pdm_sql.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pending_operation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/permissions_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/permissions_for_assignee.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/permissions_for_assignee_rule.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/platform_usage.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/platform_usage_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_dataset.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition_previous_period_measure.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_date.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition_over_period_measure.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/pop_measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/positive_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/positive_attribute_filter_positive_attribute_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/provision_database_instance_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/quality_issue.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/quality_issue_object.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/quality_issues_calculation_status_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/range.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/range_condition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/range_condition_range.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/range_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/range_measure_value_filter_range_measure_value_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/range_wrapper.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/ranking_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/ranking_filter_ranking_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/raw_custom_label.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/raw_custom_metric.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/raw_custom_override.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/raw_export_automation_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/raw_export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/reasoning.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/reasoning_step.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/reference_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/reference_source_column.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/relative.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/relative_bounded_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/relative_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/relative_date_filter_relative_date_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/relative_wrapper.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/resolve_settings_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoint.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoints.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/resolved_setting.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/rest_api_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/result_cache_metadata.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/result_dimension.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/result_dimension_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/result_spec.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/route_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/rsa_specification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/rule_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/run_service_command_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/running_section.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/saved_visualization.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/scan_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/scan_result_pdm.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/scan_sql_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/scan_sql_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/search_knowledge_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/search_relationship_object.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/search_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/search_result.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/search_result_object.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/search_statistics_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/section_slide_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/service_info.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/set_certification_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/settings.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/simple_measure_definition.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/simple_measure_definition_measure.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/skeleton.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/slides_export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/smart_function_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/smtp.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key_attribute.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key_attribute_attribute.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key_total.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key_total_total.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key_value.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sort_key_value_value.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sql_column.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/sql_query.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/succeeded_operation.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/suggestion.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/switch_identity_provider_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/table.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/table_override.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/table_warning.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/tabular_export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_definition_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_destination_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request_provider_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_llm_provider_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_notification.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_query_duration.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/test_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/thought.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/total.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/total_dimension.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/total_execution_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/total_result_header.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/trigger_automation_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/trigger_quality_issues_calculation_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_request_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_assignee.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_context.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_group_assignee.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_group_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_group_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_data_source_permission_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_permission_assignments.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_user_group_member.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_user_group_members.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_user_groups.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_user_groups_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_users.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_users_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_management_workspace_permission_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/user_permission.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/validate_by_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_by_id_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_response.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/value.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/visible_filter.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/visual_export_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/visualization_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/webhook.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/webhook_automation_info.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/webhook_message.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/webhook_message_data.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/webhook_recipient.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/what_if_measure_adjustment_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/what_if_scenario_config.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/what_if_scenario_item.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/widget_slides_template.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_automation_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_automation_management_bulk_request.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_data_source.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_identifier.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_permission_assignment.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_user.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_user_group.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_user_groups.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/workspace_users.py delete mode 100644 gooddata-api-client/gooddata_api_client/models/xliff.py diff --git a/gooddata-api-client/gooddata_api_client/models/__init__.py b/gooddata-api-client/gooddata_api_client/models/__init__.py index c88e0c516..499d0eb84 100644 --- a/gooddata-api-client/gooddata_api_client/models/__init__.py +++ b/gooddata-api-client/gooddata_api_client/models/__init__.py @@ -81,6 +81,7 @@ from gooddata_api_client.model.afm_valid_descendants_response import AfmValidDescendantsResponse from gooddata_api_client.model.afm_valid_objects_query import AfmValidObjectsQuery from gooddata_api_client.model.afm_valid_objects_response import AfmValidObjectsResponse +from gooddata_api_client.model.ai_usage_metadata_item import AiUsageMetadataItem from gooddata_api_client.model.alert_afm import AlertAfm from gooddata_api_client.model.alert_condition import AlertCondition from gooddata_api_client.model.alert_condition_operand import AlertConditionOperand @@ -186,8 +187,6 @@ from gooddata_api_client.model.convert_geo_file_request import ConvertGeoFileRequest from gooddata_api_client.model.convert_geo_file_response import ConvertGeoFileResponse from gooddata_api_client.model.cover_slide_template import CoverSlideTemplate -from gooddata_api_client.model.create_knowledge_document_request_dto import CreateKnowledgeDocumentRequestDto -from gooddata_api_client.model.create_knowledge_document_response_dto import CreateKnowledgeDocumentResponseDto from gooddata_api_client.model.created_visualization import CreatedVisualization from gooddata_api_client.model.created_visualization_filters_inner import CreatedVisualizationFiltersInner from gooddata_api_client.model.created_visualizations import CreatedVisualizations @@ -322,7 +321,6 @@ from gooddata_api_client.model.default_smtp import DefaultSmtp from gooddata_api_client.model.default_smtp_all_of import DefaultSmtpAllOf from gooddata_api_client.model.delete_files_request import DeleteFilesRequest -from gooddata_api_client.model.delete_knowledge_document_response_dto import DeleteKnowledgeDocumentResponseDto from gooddata_api_client.model.dependent_entities_graph import DependentEntitiesGraph from gooddata_api_client.model.dependent_entities_node import DependentEntitiesNode from gooddata_api_client.model.dependent_entities_request import DependentEntitiesRequest @@ -1006,11 +1004,8 @@ from gooddata_api_client.model.key_drivers_request import KeyDriversRequest from gooddata_api_client.model.key_drivers_response import KeyDriversResponse from gooddata_api_client.model.key_drivers_result import KeyDriversResult -from gooddata_api_client.model.knowledge_document_metadata_dto import KnowledgeDocumentMetadataDto -from gooddata_api_client.model.knowledge_search_result_dto import KnowledgeSearchResultDto from gooddata_api_client.model.label_identifier import LabelIdentifier from gooddata_api_client.model.list_database_instances_response import ListDatabaseInstancesResponse -from gooddata_api_client.model.list_knowledge_documents_response_dto import ListKnowledgeDocumentsResponseDto from gooddata_api_client.model.list_links import ListLinks from gooddata_api_client.model.list_links_all_of import ListLinksAllOf from gooddata_api_client.model.list_llm_provider_models_request import ListLlmProviderModelsRequest @@ -1076,7 +1071,6 @@ from gooddata_api_client.model.page_metadata import PageMetadata from gooddata_api_client.model.paging import Paging from gooddata_api_client.model.parameter import Parameter -from gooddata_api_client.model.patch_knowledge_document_request_dto import PatchKnowledgeDocumentRequestDto from gooddata_api_client.model.pdf_table_style import PdfTableStyle from gooddata_api_client.model.pdf_table_style_property import PdfTableStyleProperty from gooddata_api_client.model.pdm_ldm_request import PdmLdmRequest @@ -1152,12 +1146,10 @@ from gooddata_api_client.model.scan_result_pdm import ScanResultPdm from gooddata_api_client.model.scan_sql_request import ScanSqlRequest from gooddata_api_client.model.scan_sql_response import ScanSqlResponse -from gooddata_api_client.model.search_knowledge_response_dto import SearchKnowledgeResponseDto from gooddata_api_client.model.search_relationship_object import SearchRelationshipObject from gooddata_api_client.model.search_request import SearchRequest from gooddata_api_client.model.search_result import SearchResult from gooddata_api_client.model.search_result_object import SearchResultObject -from gooddata_api_client.model.search_statistics_dto import SearchStatisticsDto from gooddata_api_client.model.section_slide_template import SectionSlideTemplate from gooddata_api_client.model.service_info import ServiceInfo from gooddata_api_client.model.set_certification_request import SetCertificationRequest @@ -1211,8 +1203,6 @@ from gooddata_api_client.model.ui_context import UIContext from gooddata_api_client.model.upload_file_response import UploadFileResponse from gooddata_api_client.model.upload_geo_collection_file_response import UploadGeoCollectionFileResponse -from gooddata_api_client.model.upsert_knowledge_document_request_dto import UpsertKnowledgeDocumentRequestDto -from gooddata_api_client.model.upsert_knowledge_document_response_dto import UpsertKnowledgeDocumentResponseDto from gooddata_api_client.model.user_assignee import UserAssignee from gooddata_api_client.model.user_context import UserContext from gooddata_api_client.model.user_group_assignee import UserGroupAssignee diff --git a/gooddata-api-client/gooddata_api_client/models/aac_analytics_model.py b/gooddata-api-client/gooddata_api_client/models/aac_analytics_model.py deleted file mode 100644 index 6261186bd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_analytics_model.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_attribute_hierarchy import AacAttributeHierarchy -from gooddata_api_client.models.aac_dashboard import AacDashboard -from gooddata_api_client.models.aac_metric import AacMetric -from gooddata_api_client.models.aac_plugin import AacPlugin -from gooddata_api_client.models.aac_visualization import AacVisualization -from typing import Optional, Set -from typing_extensions import Self - -class AacAnalyticsModel(BaseModel): - """ - AAC analytics model representation compatible with Analytics-as-Code YAML format. - """ # noqa: E501 - attribute_hierarchies: Optional[List[AacAttributeHierarchy]] = Field(default=None, description="An array of attribute hierarchies.") - dashboards: Optional[List[AacDashboard]] = Field(default=None, description="An array of dashboards.") - metrics: Optional[List[AacMetric]] = Field(default=None, description="An array of metrics.") - plugins: Optional[List[AacPlugin]] = Field(default=None, description="An array of dashboard plugins.") - visualizations: Optional[List[AacVisualization]] = Field(default=None, description="An array of visualizations.") - __properties: ClassVar[List[str]] = ["attribute_hierarchies", "dashboards", "metrics", "plugins", "visualizations"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacAnalyticsModel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attribute_hierarchies (list) - _items = [] - if self.attribute_hierarchies: - for _item_attribute_hierarchies in self.attribute_hierarchies: - if _item_attribute_hierarchies: - _items.append(_item_attribute_hierarchies.to_dict()) - _dict['attribute_hierarchies'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in dashboards (list) - _items = [] - if self.dashboards: - for _item_dashboards in self.dashboards: - if _item_dashboards: - _items.append(_item_dashboards.to_dict()) - _dict['dashboards'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in metrics (list) - _items = [] - if self.metrics: - for _item_metrics in self.metrics: - if _item_metrics: - _items.append(_item_metrics.to_dict()) - _dict['metrics'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in plugins (list) - _items = [] - if self.plugins: - for _item_plugins in self.plugins: - if _item_plugins: - _items.append(_item_plugins.to_dict()) - _dict['plugins'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visualizations (list) - _items = [] - if self.visualizations: - for _item_visualizations in self.visualizations: - if _item_visualizations: - _items.append(_item_visualizations.to_dict()) - _dict['visualizations'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacAnalyticsModel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute_hierarchies": [AacAttributeHierarchy.from_dict(_item) for _item in obj["attribute_hierarchies"]] if obj.get("attribute_hierarchies") is not None else None, - "dashboards": [AacDashboard.from_dict(_item) for _item in obj["dashboards"]] if obj.get("dashboards") is not None else None, - "metrics": [AacMetric.from_dict(_item) for _item in obj["metrics"]] if obj.get("metrics") is not None else None, - "plugins": [AacPlugin.from_dict(_item) for _item in obj["plugins"]] if obj.get("plugins") is not None else None, - "visualizations": [AacVisualization.from_dict(_item) for _item in obj["visualizations"]] if obj.get("visualizations") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_attribute_hierarchy.py b/gooddata-api-client/gooddata_api_client/models/aac_attribute_hierarchy.py deleted file mode 100644 index 9ed2215be..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_attribute_hierarchy.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacAttributeHierarchy(BaseModel): - """ - AAC attribute hierarchy definition. - """ # noqa: E501 - attributes: List[StrictStr] = Field(description="Ordered list of attribute identifiers (first is top level).") - description: Optional[StrictStr] = Field(default=None, description="Attribute hierarchy description.") - id: StrictStr = Field(description="Unique identifier of the attribute hierarchy.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Attribute hierarchy type discriminator.") - __properties: ClassVar[List[str]] = ["attributes", "description", "id", "tags", "title", "type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacAttributeHierarchy from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacAttributeHierarchy from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": obj.get("attributes"), - "description": obj.get("description"), - "id": obj.get("id"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_container_widget.py b/gooddata-api-client/gooddata_api_client/models/aac_container_widget.py deleted file mode 100644 index 4190ea52f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_container_widget.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_widget_size import AacWidgetSize -from typing import Optional, Set -from typing_extensions import Self - -class AacContainerWidget(BaseModel): - """ - AacContainerWidget - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - columns: Optional[StrictInt] = Field(default=None, description="Widget width in grid columns (GAAC).") - container: Optional[StrictStr] = Field(default=None, description="Container widget identifier.") - content: Optional[StrictStr] = Field(default=None, description="Rich text content.") - var_date: Optional[StrictStr] = Field(default=None, description="Date dataset for filtering.", alias="date") - description: Optional[Any] = None - drill_down: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - enable_section_headers: Optional[StrictBool] = Field(default=None, description="Whether section headers are enabled for container widgets.") - ignore_dashboard_filters: Optional[List[StrictStr]] = Field(default=None, description="Deprecated. Use ignoredFilters instead.") - ignored_filters: Optional[List[StrictStr]] = Field(default=None, description="A list of dashboard filters to be ignored for this widget (GAAC).") - interactions: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Widget interactions (GAAC).") - layout_direction: Optional[StrictStr] = Field(default=None, description="Layout direction for container widgets.") - metric: Optional[StrictStr] = Field(default=None, description="Inline metric reference.") - rows: Optional[StrictInt] = Field(default=None, description="Widget height in grid rows (GAAC).") - sections: List[AacSection] = Field(description="Nested sections for layout widgets.") - size: Optional[AacWidgetSize] = None - title: Optional[Any] = None - type: Optional[StrictStr] = Field(default=None, description="Widget type.") - visualization: Optional[StrictStr] = Field(default=None, description="Visualization ID reference.") - visualizations: Optional[List[AacWidget]] = Field(default=None, description="Visualization switcher items.") - zoom_data: Optional[StrictBool] = Field(default=None, description="Enable zooming to the data for certain visualization types (GAAC).") - __properties: ClassVar[List[str]] = [] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacContainerWidget from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacContainerWidget from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - -from gooddata_api_client.models.aac_section import AacSection -from gooddata_api_client.models.aac_widget import AacWidget -# TODO: Rewrite to not use raise_errors -AacContainerWidget.model_rebuild(raise_errors=False) - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard.py deleted file mode 100644 index f16d25baf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard.py +++ /dev/null @@ -1,145 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.aac_dashboard_with_tabs import AacDashboardWithTabs -from gooddata_api_client.models.aac_dashboard_without_tabs import AacDashboardWithoutTabs -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AACDASHBOARD_ONE_OF_SCHEMAS = ["AacDashboardWithTabs", "AacDashboardWithoutTabs"] - -class AacDashboard(BaseModel): - """ - AAC dashboard definition. - """ - # data type: object - oneof_schema_1_validator: Optional[object] = None - # data type: AacDashboardWithoutTabs - oneof_schema_2_validator: Optional[AacDashboardWithoutTabs] = None - actual_instance: Optional[Union[AacDashboardWithTabs, AacDashboardWithoutTabs]] = None - one_of_schemas: Set[str] = { "AacDashboardWithTabs", "AacDashboardWithoutTabs" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AacDashboard.model_construct() - error_messages = [] - match = 0 - # validate data type: object - try: - instance.oneof_schema_1_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # validate data type: AacDashboardWithoutTabs - if not isinstance(v, AacDashboardWithoutTabs): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacDashboardWithoutTabs`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AacDashboard with oneOf schemas: AacDashboardWithTabs, AacDashboardWithoutTabs. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into object - try: - # validation - instance.oneof_schema_1_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_1_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacDashboardWithoutTabs - try: - if match == 0: - instance.actual_instance = AacDashboardWithoutTabs.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AacDashboard with oneOf schemas: AacDashboardWithTabs, AacDashboardWithoutTabs. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AacDashboardWithTabs, AacDashboardWithoutTabs]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter.py deleted file mode 100644 index 71648435b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dashboard_filter_from import AacDashboardFilterFrom -from gooddata_api_client.models.aac_filter_state import AacFilterState -from typing import Optional, Set -from typing_extensions import Self - -class AacDashboardFilter(BaseModel): - """ - Tab-specific filters. - """ # noqa: E501 - var_date: Optional[StrictStr] = Field(default=None, description="Date dataset reference.", alias="date") - display_as: Optional[StrictStr] = Field(default=None, description="Display as label.") - var_from: Optional[AacDashboardFilterFrom] = Field(default=None, alias="from") - granularity: Optional[StrictStr] = Field(default=None, description="Date granularity.") - metric_filters: Optional[List[StrictStr]] = Field(default=None, description="Metric filters for validation.") - mode: Optional[StrictStr] = Field(default=None, description="Filter mode.") - multiselect: Optional[StrictBool] = Field(default=None, description="Whether multiselect is enabled.") - parents: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Parent filter references.") - state: Optional[AacFilterState] = None - title: Optional[StrictStr] = Field(default=None, description="Filter title.") - to: Optional[AacDashboardFilterFrom] = None - type: StrictStr = Field(description="Filter type.") - using: Optional[StrictStr] = Field(default=None, description="Attribute or label to filter by.") - __properties: ClassVar[List[str]] = ["date", "display_as", "from", "granularity", "metric_filters", "mode", "multiselect", "parents", "state", "title", "to", "type", "using"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDashboardFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of var_from - if self.var_from: - _dict['from'] = self.var_from.to_dict() - # override the default output from pydantic by calling `to_dict()` of state - if self.state: - _dict['state'] = self.state.to_dict() - # override the default output from pydantic by calling `to_dict()` of to - if self.to: - _dict['to'] = self.to.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDashboardFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "date": obj.get("date"), - "display_as": obj.get("display_as"), - "from": AacDashboardFilterFrom.from_dict(obj["from"]) if obj.get("from") is not None else None, - "granularity": obj.get("granularity"), - "metric_filters": obj.get("metric_filters"), - "mode": obj.get("mode"), - "multiselect": obj.get("multiselect"), - "parents": obj.get("parents"), - "state": AacFilterState.from_dict(obj["state"]) if obj.get("state") is not None else None, - "title": obj.get("title"), - "to": AacDashboardFilterFrom.from_dict(obj["to"]) if obj.get("to") is not None else None, - "type": obj.get("type"), - "using": obj.get("using") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter_from.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter_from.py deleted file mode 100644 index bb206e07f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_filter_from.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AACDASHBOARDFILTERFROM_ONE_OF_SCHEMAS = ["int", "str"] - -class AacDashboardFilterFrom(BaseModel): - """ - AacDashboardFilterFrom - """ - # data type: str - oneof_schema_1_validator: Optional[StrictStr] = None - # data type: int - oneof_schema_2_validator: Optional[StrictInt] = None - actual_instance: Optional[Union[int, str]] = None - one_of_schemas: Set[str] = { "int", "str" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AacDashboardFilterFrom.model_construct() - error_messages = [] - match = 0 - # validate data type: str - try: - instance.oneof_schema_1_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # validate data type: int - try: - instance.oneof_schema_2_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AacDashboardFilterFrom with oneOf schemas: int, str. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into str - try: - # validation - instance.oneof_schema_1_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_1_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into int - try: - # validation - instance.oneof_schema_2_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_2_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AacDashboardFilterFrom with oneOf schemas: int, str. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], int, str]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_permissions.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard_permissions.py deleted file mode 100644 index 523155b4c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_permissions.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_permission import AacPermission -from typing import Optional, Set -from typing_extensions import Self - -class AacDashboardPermissions(BaseModel): - """ - Dashboard permissions. - """ # noqa: E501 - edit: Optional[AacPermission] = None - share: Optional[AacPermission] = None - view: Optional[AacPermission] = None - __properties: ClassVar[List[str]] = ["edit", "share", "view"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDashboardPermissions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of edit - if self.edit: - _dict['edit'] = self.edit.to_dict() - # override the default output from pydantic by calling `to_dict()` of share - if self.share: - _dict['share'] = self.share.to_dict() - # override the default output from pydantic by calling `to_dict()` of view - if self.view: - _dict['view'] = self.view.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDashboardPermissions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "edit": AacPermission.from_dict(obj["edit"]) if obj.get("edit") is not None else None, - "share": AacPermission.from_dict(obj["share"]) if obj.get("share") is not None else None, - "view": AacPermission.from_dict(obj["view"]) if obj.get("view") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_plugin_link.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard_plugin_link.py deleted file mode 100644 index cc5c169ce..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_plugin_link.py +++ /dev/null @@ -1,95 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacDashboardPluginLink(BaseModel): - """ - Dashboard plugins. - """ # noqa: E501 - id: StrictStr = Field(description="Plugin ID.") - parameters: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - __properties: ClassVar[List[str]] = ["id", "parameters"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDashboardPluginLink from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if parameters (nullable) is None - # and model_fields_set contains the field - if self.parameters is None and "parameters" in self.model_fields_set: - _dict['parameters'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDashboardPluginLink from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "parameters": obj.get("parameters") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_with_tabs.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard_with_tabs.py deleted file mode 100644 index f536ac9fc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_with_tabs.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dashboard_filter import AacDashboardFilter -from gooddata_api_client.models.aac_dashboard_permissions import AacDashboardPermissions -from gooddata_api_client.models.aac_tab import AacTab -from typing import Optional, Set -from typing_extensions import Self - -class AacDashboardWithTabs(BaseModel): - """ - AacDashboardWithTabs - """ # noqa: E501 - active_tab_id: Optional[StrictStr] = Field(default=None, description="Active tab ID for tabbed dashboards.") - cross_filtering: Optional[StrictBool] = Field(default=None, description="Whether cross filtering is enabled.") - description: Optional[StrictStr] = Field(default=None, description="Dashboard description.") - enable_section_headers: Optional[StrictBool] = Field(default=None, description="Whether section headers are enabled.") - filter_views: Optional[StrictBool] = Field(default=None, description="Whether filter views are enabled.") - filters: Optional[Dict[str, AacDashboardFilter]] = Field(default=None, description="Dashboard filters.") - id: StrictStr = Field(description="Unique identifier of the dashboard.") - permissions: Optional[AacDashboardPermissions] = None - plugins: Optional[List[Any]] = Field(default=None, description="Dashboard plugins.") - tabs: List[AacTab] = Field(description="Dashboard tabs (for tabbed dashboards).") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Dashboard type discriminator.") - user_filters_reset: Optional[StrictBool] = Field(default=None, description="Whether user can reset custom filters.") - user_filters_save: Optional[StrictBool] = Field(default=None, description="Whether user filter settings are stored.") - __properties: ClassVar[List[str]] = [] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDashboardWithTabs from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias.""" - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDashboardWithTabs from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_without_tabs.py b/gooddata-api-client/gooddata_api_client/models/aac_dashboard_without_tabs.py deleted file mode 100644 index 8eac87e76..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dashboard_without_tabs.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dashboard_filter import AacDashboardFilter -from gooddata_api_client.models.aac_dashboard_permissions import AacDashboardPermissions -from gooddata_api_client.models.aac_section import AacSection -from gooddata_api_client.models.aac_tab import AacTab -from typing import Optional, Set -from typing_extensions import Self - -class AacDashboardWithoutTabs(BaseModel): - """ - AacDashboardWithoutTabs - """ # noqa: E501 - active_tab_id: Optional[StrictStr] = Field(default=None, description="Active tab ID for tabbed dashboards.") - cross_filtering: Optional[StrictBool] = Field(default=None, description="Whether cross filtering is enabled.") - description: Optional[StrictStr] = Field(default=None, description="Dashboard description.") - enable_section_headers: Optional[StrictBool] = Field(default=None, description="Whether section headers are enabled.") - filter_views: Optional[StrictBool] = Field(default=None, description="Whether filter views are enabled.") - filters: Optional[Dict[str, AacDashboardFilter]] = Field(default=None, description="Dashboard filters.") - id: StrictStr = Field(description="Unique identifier of the dashboard.") - permissions: Optional[AacDashboardPermissions] = None - plugins: Optional[List[Any]] = Field(default=None, description="Dashboard plugins.") - sections: Optional[List[AacSection]] = Field(default=None, description="Dashboard sections (for non-tabbed dashboards).") - tabs: Optional[List[AacTab]] = Field(default=None, description="Dashboard tabs (for tabbed dashboards).") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Dashboard type discriminator.") - user_filters_reset: Optional[StrictBool] = Field(default=None, description="Whether user can reset custom filters.") - user_filters_save: Optional[StrictBool] = Field(default=None, description="Whether user filter settings are stored.") - __properties: ClassVar[List[str]] = [] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDashboardWithoutTabs from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDashboardWithoutTabs from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dataset.py b/gooddata-api-client/gooddata_api_client/models/aac_dataset.py deleted file mode 100644 index 0acd9ec69..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dataset.py +++ /dev/null @@ -1,145 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dataset_primary_key import AacDatasetPrimaryKey -from gooddata_api_client.models.aac_field import AacField -from gooddata_api_client.models.aac_reference import AacReference -from gooddata_api_client.models.aac_workspace_data_filter import AacWorkspaceDataFilter -from typing import Optional, Set -from typing_extensions import Self - -class AacDataset(BaseModel): - """ - AAC dataset definition. - """ # noqa: E501 - data_source: Optional[StrictStr] = Field(default=None, description="Data source ID.") - description: Optional[StrictStr] = Field(default=None, description="Dataset description.") - fields: Optional[Dict[str, AacField]] = Field(default=None, description="Dataset fields (attributes, facts, aggregated facts).") - id: StrictStr = Field(description="Unique identifier of the dataset.") - precedence: Optional[StrictInt] = Field(default=None, description="Precedence value for aggregate awareness.") - primary_key: Optional[AacDatasetPrimaryKey] = None - references: Optional[List[AacReference]] = Field(default=None, description="References to other datasets.") - sql: Optional[StrictStr] = Field(default=None, description="SQL statement defining this dataset.") - table_path: Optional[StrictStr] = Field(default=None, description="Table path in the data source.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Dataset type discriminator.") - workspace_data_filters: Optional[List[AacWorkspaceDataFilter]] = Field(default=None, description="Workspace data filters.") - __properties: ClassVar[List[str]] = ["data_source", "description", "fields", "id", "precedence", "primary_key", "references", "sql", "table_path", "tags", "title", "type", "workspace_data_filters"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in fields (dict) - _field_dict = {} - if self.fields: - for _key_fields in self.fields: - if self.fields[_key_fields]: - _field_dict[_key_fields] = self.fields[_key_fields].to_dict() - _dict['fields'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of primary_key - if self.primary_key: - _dict['primary_key'] = self.primary_key.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in references (list) - _items = [] - if self.references: - for _item_references in self.references: - if _item_references: - _items.append(_item_references.to_dict()) - _dict['references'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filters (list) - _items = [] - if self.workspace_data_filters: - for _item_workspace_data_filters in self.workspace_data_filters: - if _item_workspace_data_filters: - _items.append(_item_workspace_data_filters.to_dict()) - _dict['workspace_data_filters'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data_source": obj.get("data_source"), - "description": obj.get("description"), - "fields": dict( - (_k, AacField.from_dict(_v)) - for _k, _v in obj["fields"].items() - ) - if obj.get("fields") is not None - else None, - "id": obj.get("id"), - "precedence": obj.get("precedence"), - "primary_key": AacDatasetPrimaryKey.from_dict(obj["primary_key"]) if obj.get("primary_key") is not None else None, - "references": [AacReference.from_dict(_item) for _item in obj["references"]] if obj.get("references") is not None else None, - "sql": obj.get("sql"), - "table_path": obj.get("table_path"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type"), - "workspace_data_filters": [AacWorkspaceDataFilter.from_dict(_item) for _item in obj["workspace_data_filters"]] if obj.get("workspace_data_filters") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_dataset_primary_key.py b/gooddata-api-client/gooddata_api_client/models/aac_dataset_primary_key.py deleted file mode 100644 index b568adc45..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_dataset_primary_key.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AACDATASETPRIMARYKEY_ONE_OF_SCHEMAS = ["List[str]", "str"] - -class AacDatasetPrimaryKey(BaseModel): - """ - Primary key column(s). Accepts either a single string or an array of strings. - """ - # data type: str - oneof_schema_1_validator: Optional[StrictStr] = None - # data type: List[str] - oneof_schema_2_validator: Optional[List[StrictStr]] = None - actual_instance: Optional[Union[List[str], str]] = None - one_of_schemas: Set[str] = { "List[str]", "str" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AacDatasetPrimaryKey.model_construct() - error_messages = [] - match = 0 - # validate data type: str - try: - instance.oneof_schema_1_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # validate data type: List[str] - try: - instance.oneof_schema_2_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AacDatasetPrimaryKey with oneOf schemas: List[str], str. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into str - try: - # validation - instance.oneof_schema_1_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_1_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into List[str] - try: - # validation - instance.oneof_schema_2_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_2_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AacDatasetPrimaryKey with oneOf schemas: List[str], str. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], List[str], str]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_date_dataset.py b/gooddata-api-client/gooddata_api_client/models/aac_date_dataset.py deleted file mode 100644 index 2ae738310..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_date_dataset.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacDateDataset(BaseModel): - """ - AAC date dataset definition. - """ # noqa: E501 - description: Optional[StrictStr] = Field(default=None, description="Date dataset description.") - granularities: Optional[List[StrictStr]] = Field(default=None, description="List of granularities.") - id: StrictStr = Field(description="Unique identifier of the date dataset.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - title_base: Optional[StrictStr] = Field(default=None, description="Title base for formatting.") - title_pattern: Optional[StrictStr] = Field(default=None, description="Title pattern for formatting.") - type: StrictStr = Field(description="Dataset type discriminator.") - __properties: ClassVar[List[str]] = ["description", "granularities", "id", "tags", "title", "title_base", "title_pattern", "type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacDateDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacDateDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "granularities": obj.get("granularities"), - "id": obj.get("id"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "title_base": obj.get("title_base"), - "title_pattern": obj.get("title_pattern"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_field.py b/gooddata-api-client/gooddata_api_client/models/aac_field.py deleted file mode 100644 index 580f6ad65..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_field.py +++ /dev/null @@ -1,151 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_label import AacLabel -from typing import Optional, Set -from typing_extensions import Self - -class AacField(BaseModel): - """ - AAC field definition (attribute, fact, or aggregated_fact). - """ # noqa: E501 - aggregated_as: Optional[StrictStr] = Field(default=None, description="Aggregation method.") - assigned_to: Optional[StrictStr] = Field(default=None, description="Source fact ID for aggregated fact.") - data_type: Optional[StrictStr] = Field(default=None, description="Data type of the column.") - default_view: Optional[StrictStr] = Field(default=None, description="Default view label ID.") - description: Optional[StrictStr] = Field(default=None, description="Field description.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - labels: Optional[Dict[str, AacLabel]] = Field(default=None, description="Attribute labels.") - locale: Optional[StrictStr] = Field(default=None, description="Locale for sorting.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - sort_column: Optional[StrictStr] = Field(default=None, description="Sort column name.") - sort_direction: Optional[StrictStr] = Field(default=None, description="Sort direction.") - source_column: Optional[StrictStr] = Field(default=None, description="Source column in the physical database.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Field type.") - __properties: ClassVar[List[str]] = ["aggregated_as", "assigned_to", "data_type", "default_view", "description", "is_hidden", "labels", "locale", "show_in_ai_results", "sort_column", "sort_direction", "source_column", "tags", "title", "type"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - @field_validator('sort_direction') - def sort_direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacField from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in labels (dict) - _field_dict = {} - if self.labels: - for _key_labels in self.labels: - if self.labels[_key_labels]: - _field_dict[_key_labels] = self.labels[_key_labels].to_dict() - _dict['labels'] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacField from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "aggregated_as": obj.get("aggregated_as"), - "assigned_to": obj.get("assigned_to"), - "data_type": obj.get("data_type"), - "default_view": obj.get("default_view"), - "description": obj.get("description"), - "is_hidden": obj.get("is_hidden"), - "labels": dict( - (_k, AacLabel.from_dict(_v)) - for _k, _v in obj["labels"].items() - ) - if obj.get("labels") is not None - else None, - "locale": obj.get("locale"), - "show_in_ai_results": obj.get("show_in_ai_results"), - "sort_column": obj.get("sort_column"), - "sort_direction": obj.get("sort_direction"), - "source_column": obj.get("source_column"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_filter_state.py b/gooddata-api-client/gooddata_api_client/models/aac_filter_state.py deleted file mode 100644 index d598d0c8d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_filter_state.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacFilterState(BaseModel): - """ - Filter state. - """ # noqa: E501 - exclude: Optional[List[StrictStr]] = Field(default=None, description="Excluded values.") - include: Optional[List[StrictStr]] = Field(default=None, description="Included values.") - __properties: ClassVar[List[str]] = ["exclude", "include"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacFilterState from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacFilterState from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "exclude": obj.get("exclude"), - "include": obj.get("include") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_geo_area_config.py b/gooddata-api-client/gooddata_api_client/models/aac_geo_area_config.py deleted file mode 100644 index c0bafd453..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_geo_area_config.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.aac_geo_collection_identifier import AacGeoCollectionIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AacGeoAreaConfig(BaseModel): - """ - GEO area configuration. - """ # noqa: E501 - collection: AacGeoCollectionIdentifier - __properties: ClassVar[List[str]] = ["collection"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacGeoAreaConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of collection - if self.collection: - _dict['collection'] = self.collection.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacGeoAreaConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "collection": AacGeoCollectionIdentifier.from_dict(obj["collection"]) if obj.get("collection") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_geo_collection_identifier.py b/gooddata-api-client/gooddata_api_client/models/aac_geo_collection_identifier.py deleted file mode 100644 index e1a04884d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_geo_collection_identifier.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacGeoCollectionIdentifier(BaseModel): - """ - GEO collection configuration. - """ # noqa: E501 - id: StrictStr = Field(description="Collection identifier.") - kind: Optional[StrictStr] = Field(default='STATIC', description="Type of geo collection.") - __properties: ClassVar[List[str]] = ["id", "kind"] - - @field_validator('kind') - def kind_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['STATIC', 'CUSTOM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('STATIC', 'CUSTOM')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacGeoCollectionIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacGeoCollectionIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "kind": obj.get("kind") if obj.get("kind") is not None else 'STATIC' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_label.py b/gooddata-api-client/gooddata_api_client/models/aac_label.py deleted file mode 100644 index cac8a30a3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_label.py +++ /dev/null @@ -1,131 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_geo_area_config import AacGeoAreaConfig -from gooddata_api_client.models.aac_label_translation import AacLabelTranslation -from typing import Optional, Set -from typing_extensions import Self - -class AacLabel(BaseModel): - """ - AAC label definition. - """ # noqa: E501 - data_type: Optional[StrictStr] = Field(default=None, description="Data type of the column.") - description: Optional[StrictStr] = Field(default=None, description="Label description.") - geo_area_config: Optional[AacGeoAreaConfig] = None - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - locale: Optional[StrictStr] = Field(default=None, description="Locale for sorting.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - source_column: Optional[StrictStr] = Field(default=None, description="Source column name.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - translations: Optional[List[AacLabelTranslation]] = Field(default=None, description="Localized source columns.") - value_type: Optional[StrictStr] = Field(default=None, description="Value type.") - __properties: ClassVar[List[str]] = ["data_type", "description", "geo_area_config", "is_hidden", "locale", "show_in_ai_results", "source_column", "tags", "title", "translations", "value_type"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacLabel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of geo_area_config - if self.geo_area_config: - _dict['geo_area_config'] = self.geo_area_config.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in translations (list) - _items = [] - if self.translations: - for _item_translations in self.translations: - if _item_translations: - _items.append(_item_translations.to_dict()) - _dict['translations'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacLabel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data_type": obj.get("data_type"), - "description": obj.get("description"), - "geo_area_config": AacGeoAreaConfig.from_dict(obj["geo_area_config"]) if obj.get("geo_area_config") is not None else None, - "is_hidden": obj.get("is_hidden"), - "locale": obj.get("locale"), - "show_in_ai_results": obj.get("show_in_ai_results"), - "source_column": obj.get("source_column"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "translations": [AacLabelTranslation.from_dict(_item) for _item in obj["translations"]] if obj.get("translations") is not None else None, - "value_type": obj.get("value_type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_label_translation.py b/gooddata-api-client/gooddata_api_client/models/aac_label_translation.py deleted file mode 100644 index 5cc7cffa9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_label_translation.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AacLabelTranslation(BaseModel): - """ - Localized source columns. - """ # noqa: E501 - locale: StrictStr = Field(description="Locale identifier.") - source_column: StrictStr = Field(description="Source column for translation.") - __properties: ClassVar[List[str]] = ["locale", "source_column"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacLabelTranslation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacLabelTranslation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "locale": obj.get("locale"), - "source_column": obj.get("source_column") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_logical_model.py b/gooddata-api-client/gooddata_api_client/models/aac_logical_model.py deleted file mode 100644 index 8aa445693..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_logical_model.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dataset import AacDataset -from gooddata_api_client.models.aac_date_dataset import AacDateDataset -from typing import Optional, Set -from typing_extensions import Self - -class AacLogicalModel(BaseModel): - """ - AAC logical data model representation compatible with Analytics-as-Code YAML format. - """ # noqa: E501 - datasets: Optional[List[AacDataset]] = Field(default=None, description="An array of datasets.") - date_datasets: Optional[List[AacDateDataset]] = Field(default=None, description="An array of date datasets.") - __properties: ClassVar[List[str]] = ["datasets", "date_datasets"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacLogicalModel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in datasets (list) - _items = [] - if self.datasets: - for _item_datasets in self.datasets: - if _item_datasets: - _items.append(_item_datasets.to_dict()) - _dict['datasets'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in date_datasets (list) - _items = [] - if self.date_datasets: - for _item_date_datasets in self.date_datasets: - if _item_date_datasets: - _items.append(_item_date_datasets.to_dict()) - _dict['date_datasets'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacLogicalModel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "datasets": [AacDataset.from_dict(_item) for _item in obj["datasets"]] if obj.get("datasets") is not None else None, - "date_datasets": [AacDateDataset.from_dict(_item) for _item in obj["date_datasets"]] if obj.get("date_datasets") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_metric.py b/gooddata-api-client/gooddata_api_client/models/aac_metric.py deleted file mode 100644 index 36cb3dfdc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_metric.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacMetric(BaseModel): - """ - AAC metric definition. - """ # noqa: E501 - description: Optional[StrictStr] = Field(default=None, description="Metric description.") - format: Optional[StrictStr] = Field(default=None, description="Default format for metric values.") - id: StrictStr = Field(description="Unique identifier of the metric.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - is_hidden_from_kda: Optional[StrictBool] = Field(default=None, description="Whether to hide from key driver analysis.") - maql: StrictStr = Field(description="MAQL expression defining the metric.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Metric type discriminator.") - __properties: ClassVar[List[str]] = ["description", "format", "id", "is_hidden", "is_hidden_from_kda", "maql", "show_in_ai_results", "tags", "title", "type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacMetric from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacMetric from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "format": obj.get("format"), - "id": obj.get("id"), - "is_hidden": obj.get("is_hidden"), - "is_hidden_from_kda": obj.get("is_hidden_from_kda"), - "maql": obj.get("maql"), - "show_in_ai_results": obj.get("show_in_ai_results"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_permission.py b/gooddata-api-client/gooddata_api_client/models/aac_permission.py deleted file mode 100644 index ebf6535e8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_permission.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacPermission(BaseModel): - """ - SHARE permission. - """ # noqa: E501 - all: Optional[StrictBool] = Field(default=None, description="Grant to all users.") - user_groups: Optional[List[StrictStr]] = Field(default=None, description="List of user group IDs.") - users: Optional[List[StrictStr]] = Field(default=None, description="List of user IDs.") - __properties: ClassVar[List[str]] = ["all", "user_groups", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "all": obj.get("all"), - "user_groups": obj.get("user_groups"), - "users": obj.get("users") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_plugin.py b/gooddata-api-client/gooddata_api_client/models/aac_plugin.py deleted file mode 100644 index a86c5e25f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_plugin.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacPlugin(BaseModel): - """ - AAC dashboard plugin definition. - """ # noqa: E501 - description: Optional[StrictStr] = Field(default=None, description="Plugin description.") - id: StrictStr = Field(description="Unique identifier of the plugin.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - type: StrictStr = Field(description="Plugin type discriminator.") - url: StrictStr = Field(description="URL of the plugin.") - __properties: ClassVar[List[str]] = ["description", "id", "tags", "title", "type", "url"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacPlugin from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacPlugin from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "id": obj.get("id"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type"), - "url": obj.get("url") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_query.py b/gooddata-api-client/gooddata_api_client/models/aac_query.py deleted file mode 100644 index 69869fdea..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_query.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query_fields_value import AacQueryFieldsValue -from gooddata_api_client.models.aac_query_filter import AacQueryFilter -from typing import Optional, Set -from typing_extensions import Self - -class AacQuery(BaseModel): - """ - Query definition. - """ # noqa: E501 - fields: Dict[str, AacQueryFieldsValue] = Field(description="Query fields map: localId -> field definition (identifier string or structured object).") - filter_by: Optional[Dict[str, AacQueryFilter]] = Field(default=None, description="Query filters map: localId -> filter definition.") - sort_by: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Sorting definitions.") - __properties: ClassVar[List[str]] = ["fields", "filter_by", "sort_by"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacQuery from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in fields (dict) - _field_dict = {} - if self.fields: - for _key_fields in self.fields: - if self.fields[_key_fields]: - _field_dict[_key_fields] = self.fields[_key_fields].to_dict() - _dict['fields'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of each value in filter_by (dict) - _field_dict = {} - if self.filter_by: - for _key_filter_by in self.filter_by: - if self.filter_by[_key_filter_by]: - _field_dict[_key_filter_by] = self.filter_by[_key_filter_by].to_dict() - _dict['filter_by'] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacQuery from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "fields": dict( - (_k, AacQueryFieldsValue.from_dict(_v)) - for _k, _v in obj["fields"].items() - ) - if obj.get("fields") is not None - else None, - "filter_by": dict( - (_k, AacQueryFilter.from_dict(_v)) - for _k, _v in obj["filter_by"].items() - ) - if obj.get("filter_by") is not None - else None, - "sort_by": obj.get("sort_by") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_query_fields_value.py b/gooddata-api-client/gooddata_api_client/models/aac_query_fields_value.py deleted file mode 100644 index 6c783e88c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_query_fields_value.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, Dict, List, Optional -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AACQUERYFIELDSVALUE_ONE_OF_SCHEMAS = ["object", "str"] - -class AacQueryFieldsValue(BaseModel): - """ - AacQueryFieldsValue - """ - # data type: str - oneof_schema_1_validator: Optional[StrictStr] = None - # data type: object - oneof_schema_2_validator: Optional[Dict[str, Any]] = None - actual_instance: Optional[Union[object, str]] = None - one_of_schemas: Set[str] = { "object", "str" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AacQueryFieldsValue.model_construct() - error_messages = [] - match = 0 - # validate data type: str - try: - instance.oneof_schema_1_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # validate data type: object - try: - instance.oneof_schema_2_validator = v - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AacQueryFieldsValue with oneOf schemas: object, str. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into str - try: - # validation - instance.oneof_schema_1_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_1_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into object - try: - # validation - instance.oneof_schema_2_validator = json.loads(json_str) - # assign value to actual_instance - if match == 0: - instance.actual_instance = instance.oneof_schema_2_validator - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AacQueryFieldsValue with oneOf schemas: object, str. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], object, str]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_query_filter.py b/gooddata-api-client/gooddata_api_client/models/aac_query_filter.py deleted file mode 100644 index 34a57f03c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_query_filter.py +++ /dev/null @@ -1,127 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from gooddata_api_client.models.aac_dashboard_filter_from import AacDashboardFilterFrom -from gooddata_api_client.models.aac_filter_state import AacFilterState -from typing import Optional, Set -from typing_extensions import Self - -class AacQueryFilter(BaseModel): - """ - Layer filters. - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attribute: Optional[StrictStr] = Field(default=None, description="Attribute for ranking filter (identifier or localId).") - bottom: Optional[StrictInt] = Field(default=None, description="Bottom N for ranking filter.") - condition: Optional[StrictStr] = Field(default=None, description="Condition for metric value filter.") - dimensionality: Optional[List[StrictStr]] = Field(default=None, description="Dimensionality for metric value filter.") - display_as: Optional[StrictStr] = Field(default=None, description="Display as label (attribute filter).") - var_from: Optional[AacDashboardFilterFrom] = Field(default=None, alias="from") - granularity: Optional[StrictStr] = Field(default=None, description="Date granularity (date filter).") - null_values_as_zero: Optional[StrictBool] = Field(default=None, description="Null values are treated as zero (metric value filter).") - state: Optional[AacFilterState] = None - to: Optional[AacDashboardFilterFrom] = None - top: Optional[StrictInt] = Field(default=None, description="Top N for ranking filter.") - type: StrictStr = Field(description="Filter type.") - using: Optional[StrictStr] = Field(default=None, description="Reference to attribute/label/date/metric/fact (type-prefixed id).") - value: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Value for metric value filter.") - __properties: ClassVar[List[str]] = ["additionalProperties", "attribute", "bottom", "condition", "dimensionality", "display_as", "from", "granularity", "null_values_as_zero", "state", "to", "top", "type", "using", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacQueryFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of var_from - if self.var_from: - _dict['from'] = self.var_from.to_dict() - # override the default output from pydantic by calling `to_dict()` of state - if self.state: - _dict['state'] = self.state.to_dict() - # override the default output from pydantic by calling `to_dict()` of to - if self.to: - _dict['to'] = self.to.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacQueryFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "additionalProperties": obj.get("additionalProperties"), - "attribute": obj.get("attribute"), - "bottom": obj.get("bottom"), - "condition": obj.get("condition"), - "dimensionality": obj.get("dimensionality"), - "display_as": obj.get("display_as"), - "from": AacDashboardFilterFrom.from_dict(obj["from"]) if obj.get("from") is not None else None, - "granularity": obj.get("granularity"), - "null_values_as_zero": obj.get("null_values_as_zero"), - "state": AacFilterState.from_dict(obj["state"]) if obj.get("state") is not None else None, - "to": AacDashboardFilterFrom.from_dict(obj["to"]) if obj.get("to") is not None else None, - "top": obj.get("top"), - "type": obj.get("type"), - "using": obj.get("using"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_reference.py b/gooddata-api-client/gooddata_api_client/models/aac_reference.py deleted file mode 100644 index 46ce12c83..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_reference.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_reference_source import AacReferenceSource -from typing import Optional, Set -from typing_extensions import Self - -class AacReference(BaseModel): - """ - AAC reference to another dataset. - """ # noqa: E501 - dataset: StrictStr = Field(description="Target dataset ID.") - multi_directional: Optional[StrictBool] = Field(default=None, description="Whether the reference is multi-directional.") - sources: List[AacReferenceSource] = Field(description="Source columns for the reference.") - __properties: ClassVar[List[str]] = ["dataset", "multi_directional", "sources"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacReference from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in sources (list) - _items = [] - if self.sources: - for _item_sources in self.sources: - if _item_sources: - _items.append(_item_sources.to_dict()) - _dict['sources'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacReference from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataset": obj.get("dataset"), - "multi_directional": obj.get("multi_directional"), - "sources": [AacReferenceSource.from_dict(_item) for _item in obj["sources"]] if obj.get("sources") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_reference_source.py b/gooddata-api-client/gooddata_api_client/models/aac_reference_source.py deleted file mode 100644 index 6ded9036b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_reference_source.py +++ /dev/null @@ -1,103 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacReferenceSource(BaseModel): - """ - Source columns for the reference. - """ # noqa: E501 - data_type: Optional[StrictStr] = Field(default=None, description="Data type of the column.") - source_column: StrictStr = Field(description="Source column name.") - target: Optional[StrictStr] = Field(default=None, description="Target in the referenced dataset.") - __properties: ClassVar[List[str]] = ["data_type", "source_column", "target"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacReferenceSource from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacReferenceSource from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data_type": obj.get("data_type"), - "source_column": obj.get("source_column"), - "target": obj.get("target") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_rich_text_widget.py b/gooddata-api-client/gooddata_api_client/models/aac_rich_text_widget.py deleted file mode 100644 index 1a8be47c2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_rich_text_widget.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_widget_size import AacWidgetSize -from typing import Optional, Set -from typing_extensions import Self - -class AacRichTextWidget(BaseModel): - """ - AacRichTextWidget - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - columns: Optional[StrictInt] = Field(default=None, description="Widget width in grid columns (GAAC).") - container: Optional[StrictStr] = Field(default=None, description="Container widget identifier.") - content: StrictStr = Field(description="Rich text content.") - var_date: Optional[StrictStr] = Field(default=None, description="Date dataset for filtering.", alias="date") - description: Optional[Any] = None - drill_down: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - enable_section_headers: Optional[StrictBool] = Field(default=None, description="Whether section headers are enabled for container widgets.") - ignore_dashboard_filters: Optional[List[StrictStr]] = Field(default=None, description="Deprecated. Use ignoredFilters instead.") - ignored_filters: Optional[List[StrictStr]] = Field(default=None, description="A list of dashboard filters to be ignored for this widget (GAAC).") - interactions: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Widget interactions (GAAC).") - layout_direction: Optional[StrictStr] = Field(default=None, description="Layout direction for container widgets.") - metric: Optional[StrictStr] = Field(default=None, description="Inline metric reference.") - rows: Optional[StrictInt] = Field(default=None, description="Widget height in grid rows (GAAC).") - sections: Optional[List[AacSection]] = Field(default=None, description="Nested sections for layout widgets.") - size: Optional[AacWidgetSize] = None - title: Optional[Any] = None - type: Optional[StrictStr] = Field(default=None, description="Widget type.") - visualization: Optional[StrictStr] = Field(default=None, description="Visualization ID reference.") - visualizations: Optional[List[AacWidget]] = Field(default=None, description="Visualization switcher items.") - zoom_data: Optional[StrictBool] = Field(default=None, description="Enable zooming to the data for certain visualization types (GAAC).") - __properties: ClassVar[List[str]] = [] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacRichTextWidget from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacRichTextWidget from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - -from gooddata_api_client.models.aac_section import AacSection -from gooddata_api_client.models.aac_widget import AacWidget -# TODO: Rewrite to not use raise_errors -AacRichTextWidget.model_rebuild(raise_errors=False) - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_section.py b/gooddata-api-client/gooddata_api_client/models/aac_section.py deleted file mode 100644 index 61d4fc8d5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_section.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacSection(BaseModel): - """ - Sections within the tab. - """ # noqa: E501 - description: Optional[StrictStr] = Field(default=None, description="Section description.") - header: Optional[StrictBool] = Field(default=None, description="Whether section header is visible.") - title: Optional[StrictStr] = Field(default=None, description="Section title.") - widgets: Optional[List[AacWidget]] = Field(default=None, description="Widgets in the section.") - __properties: ClassVar[List[str]] = ["description", "header", "title", "widgets"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacSection from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in widgets (list) - _items = [] - if self.widgets: - for _item_widgets in self.widgets: - if _item_widgets: - _items.append(_item_widgets.to_dict()) - _dict['widgets'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacSection from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "header": obj.get("header"), - "title": obj.get("title"), - "widgets": [AacWidget.from_dict(_item) for _item in obj["widgets"]] if obj.get("widgets") is not None else None - }) - return _obj - -from gooddata_api_client.models.aac_widget import AacWidget -# TODO: Rewrite to not use raise_errors -AacSection.model_rebuild(raise_errors=False) - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_tab.py b/gooddata-api-client/gooddata_api_client/models/aac_tab.py deleted file mode 100644 index bd876680f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_tab.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dashboard_filter import AacDashboardFilter -from gooddata_api_client.models.aac_section import AacSection -from typing import Optional, Set -from typing_extensions import Self - -class AacTab(BaseModel): - """ - Dashboard tabs (for tabbed dashboards). - """ # noqa: E501 - filters: Optional[Dict[str, AacDashboardFilter]] = Field(default=None, description="Tab-specific filters.") - id: StrictStr = Field(description="Unique identifier of the tab.") - sections: Optional[List[AacSection]] = Field(default=None, description="Sections within the tab.") - title: StrictStr = Field(description="Display title for the tab.") - __properties: ClassVar[List[str]] = ["filters", "id", "sections", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacTab from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in filters (dict) - _field_dict = {} - if self.filters: - for _key_filters in self.filters: - if self.filters[_key_filters]: - _field_dict[_key_filters] = self.filters[_key_filters].to_dict() - _dict['filters'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of each item in sections (list) - _items = [] - if self.sections: - for _item_sections in self.sections: - if _item_sections: - _items.append(_item_sections.to_dict()) - _dict['sections'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacTab from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filters": dict( - (_k, AacDashboardFilter.from_dict(_v)) - for _k, _v in obj["filters"].items() - ) - if obj.get("filters") is not None - else None, - "id": obj.get("id"), - "sections": [AacSection.from_dict(_item) for _item in obj["sections"]] if obj.get("sections") is not None else None, - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization.py deleted file mode 100644 index efcc674ed..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization.py +++ /dev/null @@ -1,234 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.aac_visualization_basic_buckets import AacVisualizationBasicBuckets -from gooddata_api_client.models.aac_visualization_bubble_buckets import AacVisualizationBubbleBuckets -from gooddata_api_client.models.aac_visualization_dependency_buckets import AacVisualizationDependencyBuckets -from gooddata_api_client.models.aac_visualization_geo_buckets import AacVisualizationGeoBuckets -from gooddata_api_client.models.aac_visualization_scatter_buckets import AacVisualizationScatterBuckets -from gooddata_api_client.models.aac_visualization_stacked_buckets import AacVisualizationStackedBuckets -from gooddata_api_client.models.aac_visualization_table_buckets import AacVisualizationTableBuckets -from gooddata_api_client.models.aac_visualization_trend_buckets import AacVisualizationTrendBuckets -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AACVISUALIZATION_ONE_OF_SCHEMAS = ["AacVisualizationBasicBuckets", "AacVisualizationBubbleBuckets", "AacVisualizationDependencyBuckets", "AacVisualizationGeoBuckets", "AacVisualizationScatterBuckets", "AacVisualizationStackedBuckets", "AacVisualizationTableBuckets", "AacVisualizationTrendBuckets"] - -class AacVisualization(BaseModel): - """ - AAC visualization definition. - """ - # data type: AacVisualizationTableBuckets - oneof_schema_1_validator: Optional[AacVisualizationTableBuckets] = None - # data type: AacVisualizationStackedBuckets - oneof_schema_2_validator: Optional[AacVisualizationStackedBuckets] = None - # data type: AacVisualizationScatterBuckets - oneof_schema_3_validator: Optional[AacVisualizationScatterBuckets] = None - # data type: AacVisualizationBubbleBuckets - oneof_schema_4_validator: Optional[AacVisualizationBubbleBuckets] = None - # data type: AacVisualizationTrendBuckets - oneof_schema_5_validator: Optional[AacVisualizationTrendBuckets] = None - # data type: AacVisualizationGeoBuckets - oneof_schema_6_validator: Optional[AacVisualizationGeoBuckets] = None - # data type: AacVisualizationBasicBuckets - oneof_schema_7_validator: Optional[AacVisualizationBasicBuckets] = None - # data type: AacVisualizationDependencyBuckets - oneof_schema_8_validator: Optional[AacVisualizationDependencyBuckets] = None - actual_instance: Optional[Union[AacVisualizationBasicBuckets, AacVisualizationBubbleBuckets, AacVisualizationDependencyBuckets, AacVisualizationGeoBuckets, AacVisualizationScatterBuckets, AacVisualizationStackedBuckets, AacVisualizationTableBuckets, AacVisualizationTrendBuckets]] = None - one_of_schemas: Set[str] = { "AacVisualizationBasicBuckets", "AacVisualizationBubbleBuckets", "AacVisualizationDependencyBuckets", "AacVisualizationGeoBuckets", "AacVisualizationScatterBuckets", "AacVisualizationStackedBuckets", "AacVisualizationTableBuckets", "AacVisualizationTrendBuckets" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - discriminator_value_class_map: Dict[str, str] = { - } - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AacVisualization.model_construct() - error_messages = [] - match = 0 - # validate data type: AacVisualizationTableBuckets - if not isinstance(v, AacVisualizationTableBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationTableBuckets`") - else: - match += 1 - # validate data type: AacVisualizationStackedBuckets - if not isinstance(v, AacVisualizationStackedBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationStackedBuckets`") - else: - match += 1 - # validate data type: AacVisualizationScatterBuckets - if not isinstance(v, AacVisualizationScatterBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationScatterBuckets`") - else: - match += 1 - # validate data type: AacVisualizationBubbleBuckets - if not isinstance(v, AacVisualizationBubbleBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationBubbleBuckets`") - else: - match += 1 - # validate data type: AacVisualizationTrendBuckets - if not isinstance(v, AacVisualizationTrendBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationTrendBuckets`") - else: - match += 1 - # validate data type: AacVisualizationGeoBuckets - if not isinstance(v, AacVisualizationGeoBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationGeoBuckets`") - else: - match += 1 - # validate data type: AacVisualizationBasicBuckets - if not isinstance(v, AacVisualizationBasicBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationBasicBuckets`") - else: - match += 1 - # validate data type: AacVisualizationDependencyBuckets - if not isinstance(v, AacVisualizationDependencyBuckets): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationDependencyBuckets`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AacVisualization with oneOf schemas: AacVisualizationBasicBuckets, AacVisualizationBubbleBuckets, AacVisualizationDependencyBuckets, AacVisualizationGeoBuckets, AacVisualizationScatterBuckets, AacVisualizationStackedBuckets, AacVisualizationTableBuckets, AacVisualizationTrendBuckets. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AacVisualizationTableBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationTableBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationStackedBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationStackedBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationScatterBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationScatterBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationBubbleBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationBubbleBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationTrendBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationTrendBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationGeoBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationGeoBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationBasicBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationBasicBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationDependencyBuckets - try: - if match == 0: - instance.actual_instance = AacVisualizationDependencyBuckets.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AacVisualization with oneOf schemas: AacVisualizationBasicBuckets, AacVisualizationBubbleBuckets, AacVisualizationDependencyBuckets, AacVisualizationGeoBuckets, AacVisualizationScatterBuckets, AacVisualizationStackedBuckets, AacVisualizationTableBuckets, AacVisualizationTrendBuckets. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AacVisualizationBasicBuckets, AacVisualizationBubbleBuckets, AacVisualizationDependencyBuckets, AacVisualizationGeoBuckets, AacVisualizationScatterBuckets, AacVisualizationStackedBuckets, AacVisualizationTableBuckets, AacVisualizationTrendBuckets]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_basic_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_basic_buckets.py deleted file mode 100644 index 36bacf1b9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_basic_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationBasicBuckets(BaseModel): - """ - AacVisualizationBasicBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['bullet_chart', 'combo_chart', 'donut_chart', 'funnel_chart', 'headline_chart', 'pie_chart', 'pyramid_chart', 'treemap_chart', 'waterfall_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('bullet_chart', 'combo_chart', 'donut_chart', 'funnel_chart', 'headline_chart', 'pie_chart', 'pyramid_chart', 'treemap_chart', 'waterfall_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationBasicBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationBasicBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_bubble_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_bubble_buckets.py deleted file mode 100644 index a98893d1f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_bubble_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationBubbleBuckets(BaseModel): - """ - AacVisualizationBubbleBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['bubble_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('bubble_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationBubbleBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationBubbleBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_dependency_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_dependency_buckets.py deleted file mode 100644 index 6ee71274c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_dependency_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationDependencyBuckets(BaseModel): - """ - AacVisualizationDependencyBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dependency_wheel_chart', 'sankey_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dependency_wheel_chart', 'sankey_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationDependencyBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationDependencyBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_geo_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_geo_buckets.py deleted file mode 100644 index eb7aa4a91..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_geo_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationGeoBuckets(BaseModel): - """ - AacVisualizationGeoBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['geo_chart', 'geo_area_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('geo_chart', 'geo_area_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationGeoBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationGeoBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_layer.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_layer.py deleted file mode 100644 index 23392b886..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_layer.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query_fields_value import AacQueryFieldsValue -from gooddata_api_client.models.aac_query_filter import AacQueryFilter -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationLayer(BaseModel): - """ - Visualization data layers (for geo charts). - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - filters: Optional[Dict[str, AacQueryFilter]] = Field(default=None, description="Layer filters.") - id: StrictStr = Field(description="Unique identifier of the layer.") - metrics: Optional[List[AacQueryFieldsValue]] = Field(default=None, description="Layer metrics.") - segment_by: Optional[List[AacQueryFieldsValue]] = Field(default=None, description="Layer segment by.") - sorts: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Layer sorting definitions.") - title: Optional[StrictStr] = Field(default=None, description="Layer title.") - type: Optional[StrictStr] = Field(default=None, description="Layer type.") - view_by: Optional[List[AacQueryFieldsValue]] = Field(default=None, description="Layer view by.") - __properties: ClassVar[List[str]] = ["additionalProperties", "config", "filters", "id", "metrics", "segment_by", "sorts", "title", "type", "view_by"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationLayer from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in filters (dict) - _field_dict = {} - if self.filters: - for _key_filters in self.filters: - if self.filters[_key_filters]: - _field_dict[_key_filters] = self.filters[_key_filters].to_dict() - _dict['filters'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of each item in metrics (list) - _items = [] - if self.metrics: - for _item_metrics in self.metrics: - if _item_metrics: - _items.append(_item_metrics.to_dict()) - _dict['metrics'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in segment_by (list) - _items = [] - if self.segment_by: - for _item_segment_by in self.segment_by: - if _item_segment_by: - _items.append(_item_segment_by.to_dict()) - _dict['segment_by'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in view_by (list) - _items = [] - if self.view_by: - for _item_view_by in self.view_by: - if _item_view_by: - _items.append(_item_view_by.to_dict()) - _dict['view_by'] = _items - # set to None if config (nullable) is None - # and model_fields_set contains the field - if self.config is None and "config" in self.model_fields_set: - _dict['config'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationLayer from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "additionalProperties": obj.get("additionalProperties"), - "config": obj.get("config"), - "filters": dict( - (_k, AacQueryFilter.from_dict(_v)) - for _k, _v in obj["filters"].items() - ) - if obj.get("filters") is not None - else None, - "id": obj.get("id"), - "metrics": [AacQueryFieldsValue.from_dict(_item) for _item in obj["metrics"]] if obj.get("metrics") is not None else None, - "segment_by": [AacQueryFieldsValue.from_dict(_item) for _item in obj["segment_by"]] if obj.get("segment_by") is not None else None, - "sorts": obj.get("sorts"), - "title": obj.get("title"), - "type": obj.get("type"), - "view_by": [AacQueryFieldsValue.from_dict(_item) for _item in obj["view_by"]] if obj.get("view_by") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_scatter_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_scatter_buckets.py deleted file mode 100644 index 247f56ae4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_scatter_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationScatterBuckets(BaseModel): - """ - AacVisualizationScatterBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['scatter_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('scatter_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationScatterBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationScatterBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_stacked_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_stacked_buckets.py deleted file mode 100644 index 02daaf5e9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_stacked_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationStackedBuckets(BaseModel): - """ - AacVisualizationStackedBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['bar_chart', 'column_chart', 'area_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('bar_chart', 'column_chart', 'area_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationStackedBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationStackedBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_switcher_widget.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_switcher_widget.py deleted file mode 100644 index 63f0e33c4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_switcher_widget.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_widget_size import AacWidgetSize -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationSwitcherWidget(BaseModel): - """ - AacVisualizationSwitcherWidget - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - columns: Optional[StrictInt] = Field(default=None, description="Widget width in grid columns (GAAC).") - container: Optional[StrictStr] = Field(default=None, description="Container widget identifier.") - content: Optional[StrictStr] = Field(default=None, description="Rich text content.") - var_date: Optional[StrictStr] = Field(default=None, description="Date dataset for filtering.", alias="date") - description: Optional[Any] = None - drill_down: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - enable_section_headers: Optional[StrictBool] = Field(default=None, description="Whether section headers are enabled for container widgets.") - ignore_dashboard_filters: Optional[List[StrictStr]] = Field(default=None, description="Deprecated. Use ignoredFilters instead.") - ignored_filters: Optional[List[StrictStr]] = Field(default=None, description="A list of dashboard filters to be ignored for this widget (GAAC).") - interactions: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Widget interactions (GAAC).") - layout_direction: Optional[StrictStr] = Field(default=None, description="Layout direction for container widgets.") - metric: Optional[StrictStr] = Field(default=None, description="Inline metric reference.") - rows: Optional[StrictInt] = Field(default=None, description="Widget height in grid rows (GAAC).") - sections: Optional[List[AacSection]] = Field(default=None, description="Nested sections for layout widgets.") - size: Optional[AacWidgetSize] = None - title: Optional[Any] = None - type: Optional[StrictStr] = Field(default=None, description="Widget type.") - visualization: Optional[StrictStr] = Field(default=None, description="Visualization ID reference.") - visualizations: List[AacVisualizationWidget] - zoom_data: Optional[StrictBool] = Field(default=None, description="Enable zooming to the data for certain visualization types (GAAC).") - __properties: ClassVar[List[str]] = [] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationSwitcherWidget from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationSwitcherWidget from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - -from gooddata_api_client.models.aac_section import AacSection -from gooddata_api_client.models.aac_visualization_widget import AacVisualizationWidget -# TODO: Rewrite to not use raise_errors -AacVisualizationSwitcherWidget.model_rebuild(raise_errors=False) - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_table_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_table_buckets.py deleted file mode 100644 index a046a7e15..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_table_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationTableBuckets(BaseModel): - """ - AacVisualizationTableBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['table', 'heatmap_chart', 'repeater_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('table', 'heatmap_chart', 'repeater_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationTableBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationTableBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_trend_buckets.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_trend_buckets.py deleted file mode 100644 index e27a6d79f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_trend_buckets.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_query import AacQuery -from gooddata_api_client.models.aac_visualization_layer import AacVisualizationLayer -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationTrendBuckets(BaseModel): - """ - AacVisualizationTrendBuckets - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - attributes: Optional[List[Any]] = Field(default=None, description="Attributes bucket (for scatter).") - columns: Optional[List[Any]] = Field(default=None, description="Columns bucket (for tables).") - config: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[StrictStr] = Field(default=None, description="Visualization description.") - var_from: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object", alias="from") - id: StrictStr = Field(description="Unique identifier of the visualization.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Deprecated. Use showInAiResults instead.") - layers: Optional[List[AacVisualizationLayer]] = Field(default=None, description="Visualization data layers (for geo charts).") - metrics: Optional[List[Any]] = Field(default=None, description="Metrics bucket.") - query: AacQuery - rows: Optional[List[Any]] = Field(default=None, description="Rows bucket (for tables).") - segment_by: Optional[List[Any]] = Field(default=None, description="Segment by attributes bucket.") - show_in_ai_results: Optional[StrictBool] = Field(default=None, description="Whether to show in AI results.") - size_by: Optional[List[Any]] = Field(default=None, description="Size by metrics bucket.") - stack_by: Optional[List[Any]] = Field(default=None, description="Stack by attributes bucket.") - tags: Optional[List[StrictStr]] = Field(default=None, description="Metadata tags.") - title: Optional[StrictStr] = Field(default=None, description="Human readable title.") - to: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - trend_by: Optional[List[Any]] = Field(default=None, description="Trend by attributes bucket.") - type: StrictStr - view_by: Optional[List[Any]] = Field(default=None, description="View by attributes bucket.") - __properties: ClassVar[List[str]] = [] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['line_chart']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('line_chart')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationTrendBuckets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationTrendBuckets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_visualization_widget.py b/gooddata-api-client/gooddata_api_client/models/aac_visualization_widget.py deleted file mode 100644 index f77284e5a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_visualization_widget.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_widget_size import AacWidgetSize -from typing import Optional, Set -from typing_extensions import Self - -class AacVisualizationWidget(BaseModel): - """ - AacVisualizationWidget - """ # noqa: E501 - additional_properties: Optional[Dict[str, Optional[Dict[str, Any]]]] = Field(default=None, alias="additionalProperties") - columns: Optional[StrictInt] = Field(default=None, description="Widget width in grid columns (GAAC).") - container: Optional[StrictStr] = Field(default=None, description="Container widget identifier.") - content: Optional[StrictStr] = Field(default=None, description="Rich text content.") - var_date: Optional[StrictStr] = Field(default=None, description="Date dataset for filtering.", alias="date") - description: Optional[Any] = None - drill_down: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - enable_section_headers: Optional[StrictBool] = Field(default=None, description="Whether section headers are enabled for container widgets.") - ignore_dashboard_filters: Optional[List[StrictStr]] = Field(default=None, description="Deprecated. Use ignoredFilters instead.") - ignored_filters: Optional[List[StrictStr]] = Field(default=None, description="A list of dashboard filters to be ignored for this widget (GAAC).") - interactions: Optional[List[Optional[Dict[str, Any]]]] = Field(default=None, description="Widget interactions (GAAC).") - layout_direction: Optional[StrictStr] = Field(default=None, description="Layout direction for container widgets.") - metric: Optional[StrictStr] = Field(default=None, description="Inline metric reference.") - rows: Optional[StrictInt] = Field(default=None, description="Widget height in grid rows (GAAC).") - sections: Optional[List[AacSection]] = Field(default=None, description="Nested sections for layout widgets.") - size: Optional[AacWidgetSize] = None - title: Optional[Any] = None - type: Optional[StrictStr] = Field(default=None, description="Widget type.") - visualization: StrictStr = Field(description="Visualization ID reference.") - visualizations: Optional[List[AacWidget]] = Field(default=None, description="Visualization switcher items.") - zoom_data: Optional[StrictBool] = Field(default=None, description="Enable zooming to the data for certain visualization types (GAAC).") - __properties: ClassVar[List[str]] = [] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacVisualizationWidget from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacVisualizationWidget from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - }) - return _obj - -from gooddata_api_client.models.aac_section import AacSection -from gooddata_api_client.models.aac_widget import AacWidget -# TODO: Rewrite to not use raise_errors -AacVisualizationWidget.model_rebuild(raise_errors=False) - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_widget.py b/gooddata-api-client/gooddata_api_client/models/aac_widget.py deleted file mode 100644 index b450a3ab4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_widget.py +++ /dev/null @@ -1,173 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AACWIDGET_ONE_OF_SCHEMAS = ["AacContainerWidget", "AacRichTextWidget", "AacVisualizationSwitcherWidget", "AacVisualizationWidget"] - -class AacWidget(BaseModel): - """ - Widgets in the section. - """ - # data type: AacVisualizationWidget - oneof_schema_1_validator: Optional[AacVisualizationWidget] = None - # data type: AacRichTextWidget - oneof_schema_2_validator: Optional[AacRichTextWidget] = None - # data type: AacVisualizationSwitcherWidget - oneof_schema_3_validator: Optional[AacVisualizationSwitcherWidget] = None - # data type: AacContainerWidget - oneof_schema_4_validator: Optional[AacContainerWidget] = None - actual_instance: Optional[Union[AacContainerWidget, AacRichTextWidget, AacVisualizationSwitcherWidget, AacVisualizationWidget]] = None - one_of_schemas: Set[str] = { "AacContainerWidget", "AacRichTextWidget", "AacVisualizationSwitcherWidget", "AacVisualizationWidget" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AacWidget.model_construct() - error_messages = [] - match = 0 - # validate data type: AacVisualizationWidget - if not isinstance(v, AacVisualizationWidget): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationWidget`") - else: - match += 1 - # validate data type: AacRichTextWidget - if not isinstance(v, AacRichTextWidget): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacRichTextWidget`") - else: - match += 1 - # validate data type: AacVisualizationSwitcherWidget - if not isinstance(v, AacVisualizationSwitcherWidget): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacVisualizationSwitcherWidget`") - else: - match += 1 - # validate data type: AacContainerWidget - if not isinstance(v, AacContainerWidget): - error_messages.append(f"Error! Input type `{type(v)}` is not `AacContainerWidget`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AacWidget with oneOf schemas: AacContainerWidget, AacRichTextWidget, AacVisualizationSwitcherWidget, AacVisualizationWidget. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AacVisualizationWidget - try: - if match == 0: - instance.actual_instance = AacVisualizationWidget.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacRichTextWidget - try: - if match == 0: - instance.actual_instance = AacRichTextWidget.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacVisualizationSwitcherWidget - try: - if match == 0: - instance.actual_instance = AacVisualizationSwitcherWidget.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AacContainerWidget - try: - if match == 0: - instance.actual_instance = AacContainerWidget.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AacWidget with oneOf schemas: AacContainerWidget, AacRichTextWidget, AacVisualizationSwitcherWidget, AacVisualizationWidget. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AacContainerWidget, AacRichTextWidget, AacVisualizationSwitcherWidget, AacVisualizationWidget]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - -from gooddata_api_client.models.aac_container_widget import AacContainerWidget -from gooddata_api_client.models.aac_rich_text_widget import AacRichTextWidget -from gooddata_api_client.models.aac_visualization_switcher_widget import AacVisualizationSwitcherWidget -from gooddata_api_client.models.aac_visualization_widget import AacVisualizationWidget -# TODO: Rewrite to not use raise_errors -AacWidget.model_rebuild(raise_errors=False) - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_widget_size.py b/gooddata-api-client/gooddata_api_client/models/aac_widget_size.py deleted file mode 100644 index b431fb51f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_widget_size.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AacWidgetSize(BaseModel): - """ - Deprecated widget size (legacy AAC). - """ # noqa: E501 - height: Optional[StrictInt] = Field(default=None, description="Height in grid rows.") - height_as_ratio: Optional[StrictBool] = Field(default=None, description="Height definition mode.") - width: Optional[StrictInt] = Field(default=None, description="Width in grid columns.") - __properties: ClassVar[List[str]] = ["height", "height_as_ratio", "width"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacWidgetSize from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacWidgetSize from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "height": obj.get("height"), - "height_as_ratio": obj.get("height_as_ratio"), - "width": obj.get("width") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aac_workspace_data_filter.py b/gooddata-api-client/gooddata_api_client/models/aac_workspace_data_filter.py deleted file mode 100644 index 255bcd957..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aac_workspace_data_filter.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AacWorkspaceDataFilter(BaseModel): - """ - Workspace data filters. - """ # noqa: E501 - data_type: StrictStr = Field(description="Data type of the column.") - filter_id: StrictStr = Field(description="Filter identifier.") - source_column: StrictStr = Field(description="Source column name.") - __properties: ClassVar[List[str]] = ["data_type", "filter_id", "source_column"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AacWorkspaceDataFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AacWorkspaceDataFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data_type": obj.get("data_type"), - "filter_id": obj.get("filter_id"), - "source_column": obj.get("source_column") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/absolute_date_filter.py b/gooddata-api-client/gooddata_api_client/models/absolute_date_filter.py deleted file mode 100644 index ef2a39934..000000000 --- a/gooddata-api-client/gooddata_api_client/models/absolute_date_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.absolute_date_filter_absolute_date_filter import AbsoluteDateFilterAbsoluteDateFilter -from typing import Optional, Set -from typing_extensions import Self - -class AbsoluteDateFilter(BaseModel): - """ - A datetime filter specifying exact from and to values. - """ # noqa: E501 - absolute_date_filter: AbsoluteDateFilterAbsoluteDateFilter = Field(alias="absoluteDateFilter") - __properties: ClassVar[List[str]] = ["absoluteDateFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AbsoluteDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of absolute_date_filter - if self.absolute_date_filter: - _dict['absoluteDateFilter'] = self.absolute_date_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AbsoluteDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "absoluteDateFilter": AbsoluteDateFilterAbsoluteDateFilter.from_dict(obj["absoluteDateFilter"]) if obj.get("absoluteDateFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/absolute_date_filter_absolute_date_filter.py b/gooddata-api-client/gooddata_api_client/models/absolute_date_filter_absolute_date_filter.py deleted file mode 100644 index 9973a5159..000000000 --- a/gooddata-api-client/gooddata_api_client/models/absolute_date_filter_absolute_date_filter.py +++ /dev/null @@ -1,128 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.afm_object_identifier_dataset import AfmObjectIdentifierDataset -from typing import Optional, Set -from typing_extensions import Self - -class AbsoluteDateFilterAbsoluteDateFilter(BaseModel): - """ - AbsoluteDateFilterAbsoluteDateFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - dataset: AfmObjectIdentifierDataset - empty_value_handling: Optional[StrictStr] = Field(default='EXCLUDE', description="Specifies how rows with empty (null/missing) date values should be handled. INCLUDE includes empty dates in addition to the date range restriction, EXCLUDE removes rows with empty dates (default), ONLY keeps only rows with empty dates.", alias="emptyValueHandling") - var_from: Annotated[str, Field(strict=True)] = Field(alias="from") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - to: Annotated[str, Field(strict=True)] - __properties: ClassVar[List[str]] = ["applyOnResult", "dataset", "emptyValueHandling", "from", "localIdentifier", "to"] - - @field_validator('empty_value_handling') - def empty_value_handling_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INCLUDE', 'EXCLUDE', 'ONLY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCLUDE', 'EXCLUDE', 'ONLY')") - return value - - @field_validator('var_from') - def var_from_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2})?$", value): - raise ValueError(r"must validate the regular expression /^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2})?$/") - return value - - @field_validator('to') - def to_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2})?$", value): - raise ValueError(r"must validate the regular expression /^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2})?$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AbsoluteDateFilterAbsoluteDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AbsoluteDateFilterAbsoluteDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "dataset": AfmObjectIdentifierDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "emptyValueHandling": obj.get("emptyValueHandling") if obj.get("emptyValueHandling") is not None else 'EXCLUDE', - "from": obj.get("from"), - "localIdentifier": obj.get("localIdentifier"), - "to": obj.get("to") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/abstract_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/abstract_measure_value_filter.py deleted file mode 100644 index c235da094..000000000 --- a/gooddata-api-client/gooddata_api_client/models/abstract_measure_value_filter.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.comparison_measure_value_filter import ComparisonMeasureValueFilter -from gooddata_api_client.models.compound_measure_value_filter import CompoundMeasureValueFilter -from gooddata_api_client.models.range_measure_value_filter import RangeMeasureValueFilter -from gooddata_api_client.models.ranking_filter import RankingFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -ABSTRACTMEASUREVALUEFILTER_ONE_OF_SCHEMAS = ["ComparisonMeasureValueFilter", "CompoundMeasureValueFilter", "RangeMeasureValueFilter", "RankingFilter"] - -class AbstractMeasureValueFilter(BaseModel): - """ - AbstractMeasureValueFilter - """ - # data type: ComparisonMeasureValueFilter - oneof_schema_1_validator: Optional[ComparisonMeasureValueFilter] = None - # data type: RangeMeasureValueFilter - oneof_schema_2_validator: Optional[RangeMeasureValueFilter] = None - # data type: CompoundMeasureValueFilter - oneof_schema_3_validator: Optional[CompoundMeasureValueFilter] = None - # data type: RankingFilter - oneof_schema_4_validator: Optional[RankingFilter] = None - actual_instance: Optional[Union[ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter, RankingFilter]] = None - one_of_schemas: Set[str] = { "ComparisonMeasureValueFilter", "CompoundMeasureValueFilter", "RangeMeasureValueFilter", "RankingFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AbstractMeasureValueFilter.model_construct() - error_messages = [] - match = 0 - # validate data type: ComparisonMeasureValueFilter - if not isinstance(v, ComparisonMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `ComparisonMeasureValueFilter`") - else: - match += 1 - # validate data type: RangeMeasureValueFilter - if not isinstance(v, RangeMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RangeMeasureValueFilter`") - else: - match += 1 - # validate data type: CompoundMeasureValueFilter - if not isinstance(v, CompoundMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `CompoundMeasureValueFilter`") - else: - match += 1 - # validate data type: RankingFilter - if not isinstance(v, RankingFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RankingFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AbstractMeasureValueFilter with oneOf schemas: ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter, RankingFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into ComparisonMeasureValueFilter - try: - if match == 0: - instance.actual_instance = ComparisonMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RangeMeasureValueFilter - try: - if match == 0: - instance.actual_instance = RangeMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into CompoundMeasureValueFilter - try: - if match == 0: - instance.actual_instance = CompoundMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RankingFilter - try: - if match == 0: - instance.actual_instance = RankingFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AbstractMeasureValueFilter with oneOf schemas: ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter, RankingFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter, RankingFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/active_object_identification.py b/gooddata-api-client/gooddata_api_client/models/active_object_identification.py deleted file mode 100644 index caeea2be9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/active_object_identification.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ActiveObjectIdentification(BaseModel): - """ - Object, with which the user is actively working. - """ # noqa: E501 - id: StrictStr = Field(description="Object ID.") - type: StrictStr = Field(description="Object type, e.g. dashboard.") - workspace_id: StrictStr = Field(description="Workspace ID.", alias="workspaceId") - __properties: ClassVar[List[str]] = ["id", "type", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ActiveObjectIdentification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ActiveObjectIdentification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/ad_hoc_automation.py b/gooddata-api-client/gooddata_api_client/models/ad_hoc_automation.py deleted file mode 100644 index 1ca0ee297..000000000 --- a/gooddata-api-client/gooddata_api_client/models/ad_hoc_automation.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.automation_alert import AutomationAlert -from gooddata_api_client.models.automation_dashboard_tabular_export import AutomationDashboardTabularExport -from gooddata_api_client.models.automation_external_recipient import AutomationExternalRecipient -from gooddata_api_client.models.automation_image_export import AutomationImageExport -from gooddata_api_client.models.automation_metadata import AutomationMetadata -from gooddata_api_client.models.automation_raw_export import AutomationRawExport -from gooddata_api_client.models.automation_slides_export import AutomationSlidesExport -from gooddata_api_client.models.automation_tabular_export import AutomationTabularExport -from gooddata_api_client.models.automation_visual_export import AutomationVisualExport -from gooddata_api_client.models.declarative_analytical_dashboard_identifier import DeclarativeAnalyticalDashboardIdentifier -from gooddata_api_client.models.declarative_notification_channel_identifier import DeclarativeNotificationChannelIdentifier -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AdHocAutomation(BaseModel): - """ - AdHocAutomation - """ # noqa: E501 - alert: Optional[AutomationAlert] = None - analytical_dashboard: Optional[DeclarativeAnalyticalDashboardIdentifier] = Field(default=None, alias="analyticalDashboard") - dashboard_tabular_exports: Optional[List[AutomationDashboardTabularExport]] = Field(default=None, alias="dashboardTabularExports") - description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - details: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=10000)]]] = Field(default=None, description="Additional details to be included in the automated message.") - external_recipients: Optional[List[AutomationExternalRecipient]] = Field(default=None, description="External recipients of the automation action results.", alias="externalRecipients") - image_exports: Optional[List[AutomationImageExport]] = Field(default=None, alias="imageExports") - metadata: Optional[AutomationMetadata] = None - notification_channel: Optional[DeclarativeNotificationChannelIdentifier] = Field(default=None, alias="notificationChannel") - raw_exports: Optional[List[AutomationRawExport]] = Field(default=None, alias="rawExports") - recipients: Optional[List[DeclarativeUserIdentifier]] = None - slides_exports: Optional[List[AutomationSlidesExport]] = Field(default=None, alias="slidesExports") - tabular_exports: Optional[List[AutomationTabularExport]] = Field(default=None, alias="tabularExports") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - visual_exports: Optional[List[AutomationVisualExport]] = Field(default=None, alias="visualExports") - __properties: ClassVar[List[str]] = ["alert", "analyticalDashboard", "dashboardTabularExports", "description", "details", "externalRecipients", "imageExports", "metadata", "notificationChannel", "rawExports", "recipients", "slidesExports", "tabularExports", "tags", "title", "visualExports"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AdHocAutomation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of alert - if self.alert: - _dict['alert'] = self.alert.to_dict() - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_tabular_exports (list) - _items = [] - if self.dashboard_tabular_exports: - for _item_dashboard_tabular_exports in self.dashboard_tabular_exports: - if _item_dashboard_tabular_exports: - _items.append(_item_dashboard_tabular_exports.to_dict()) - _dict['dashboardTabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in external_recipients (list) - _items = [] - if self.external_recipients: - for _item_external_recipients in self.external_recipients: - if _item_external_recipients: - _items.append(_item_external_recipients.to_dict()) - _dict['externalRecipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in image_exports (list) - _items = [] - if self.image_exports: - for _item_image_exports in self.image_exports: - if _item_image_exports: - _items.append(_item_image_exports.to_dict()) - _dict['imageExports'] = _items - # override the default output from pydantic by calling `to_dict()` of metadata - if self.metadata: - _dict['metadata'] = self.metadata.to_dict() - # override the default output from pydantic by calling `to_dict()` of notification_channel - if self.notification_channel: - _dict['notificationChannel'] = self.notification_channel.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in raw_exports (list) - _items = [] - if self.raw_exports: - for _item_raw_exports in self.raw_exports: - if _item_raw_exports: - _items.append(_item_raw_exports.to_dict()) - _dict['rawExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in recipients (list) - _items = [] - if self.recipients: - for _item_recipients in self.recipients: - if _item_recipients: - _items.append(_item_recipients.to_dict()) - _dict['recipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in slides_exports (list) - _items = [] - if self.slides_exports: - for _item_slides_exports in self.slides_exports: - if _item_slides_exports: - _items.append(_item_slides_exports.to_dict()) - _dict['slidesExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tabular_exports (list) - _items = [] - if self.tabular_exports: - for _item_tabular_exports in self.tabular_exports: - if _item_tabular_exports: - _items.append(_item_tabular_exports.to_dict()) - _dict['tabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visual_exports (list) - _items = [] - if self.visual_exports: - for _item_visual_exports in self.visual_exports: - if _item_visual_exports: - _items.append(_item_visual_exports.to_dict()) - _dict['visualExports'] = _items - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AdHocAutomation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alert": AutomationAlert.from_dict(obj["alert"]) if obj.get("alert") is not None else None, - "analyticalDashboard": DeclarativeAnalyticalDashboardIdentifier.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "dashboardTabularExports": [AutomationDashboardTabularExport.from_dict(_item) for _item in obj["dashboardTabularExports"]] if obj.get("dashboardTabularExports") is not None else None, - "description": obj.get("description"), - "details": obj.get("details"), - "externalRecipients": [AutomationExternalRecipient.from_dict(_item) for _item in obj["externalRecipients"]] if obj.get("externalRecipients") is not None else None, - "imageExports": [AutomationImageExport.from_dict(_item) for _item in obj["imageExports"]] if obj.get("imageExports") is not None else None, - "metadata": AutomationMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, - "notificationChannel": DeclarativeNotificationChannelIdentifier.from_dict(obj["notificationChannel"]) if obj.get("notificationChannel") is not None else None, - "rawExports": [AutomationRawExport.from_dict(_item) for _item in obj["rawExports"]] if obj.get("rawExports") is not None else None, - "recipients": [DeclarativeUserIdentifier.from_dict(_item) for _item in obj["recipients"]] if obj.get("recipients") is not None else None, - "slidesExports": [AutomationSlidesExport.from_dict(_item) for _item in obj["slidesExports"]] if obj.get("slidesExports") is not None else None, - "tabularExports": [AutomationTabularExport.from_dict(_item) for _item in obj["tabularExports"]] if obj.get("tabularExports") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "visualExports": [AutomationVisualExport.from_dict(_item) for _item in obj["visualExports"]] if obj.get("visualExports") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm.py b/gooddata-api-client/gooddata_api_client/models/afm.py deleted file mode 100644 index effe34725..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm.py +++ /dev/null @@ -1,135 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_filters_inner import AFMFiltersInner -from gooddata_api_client.models.attribute_item import AttributeItem -from gooddata_api_client.models.measure_item import MeasureItem -from gooddata_api_client.models.metric_definition_override import MetricDefinitionOverride -from typing import Optional, Set -from typing_extensions import Self - -class AFM(BaseModel): - """ - Top level executable entity. Combination of [A]ttributes, [F]ilters & [M]etrics. - """ # noqa: E501 - attributes: List[AttributeItem] = Field(description="Attributes to be used in the computation.") - aux_measures: Optional[List[MeasureItem]] = Field(default=None, description="Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", alias="auxMeasures") - filters: List[AFMFiltersInner] = Field(description="Various filter types to filter the execution result.") - measure_definition_overrides: Optional[List[MetricDefinitionOverride]] = Field(default=None, description="(EXPERIMENTAL) Override definitions of catalog metrics for this request. Allows substituting a catalog metric's MAQL definition without modifying the stored definition.", alias="measureDefinitionOverrides") - measures: List[MeasureItem] = Field(description="Metrics to be computed.") - __properties: ClassVar[List[str]] = ["attributes", "auxMeasures", "filters", "measureDefinitionOverrides", "measures"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AFM from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in aux_measures (list) - _items = [] - if self.aux_measures: - for _item_aux_measures in self.aux_measures: - if _item_aux_measures: - _items.append(_item_aux_measures.to_dict()) - _dict['auxMeasures'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in measure_definition_overrides (list) - _items = [] - if self.measure_definition_overrides: - for _item_measure_definition_overrides in self.measure_definition_overrides: - if _item_measure_definition_overrides: - _items.append(_item_measure_definition_overrides.to_dict()) - _dict['measureDefinitionOverrides'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in measures (list) - _items = [] - if self.measures: - for _item_measures in self.measures: - if _item_measures: - _items.append(_item_measures.to_dict()) - _dict['measures'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AFM from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": [AttributeItem.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None, - "auxMeasures": [MeasureItem.from_dict(_item) for _item in obj["auxMeasures"]] if obj.get("auxMeasures") is not None else None, - "filters": [AFMFiltersInner.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "measureDefinitionOverrides": [MetricDefinitionOverride.from_dict(_item) for _item in obj["measureDefinitionOverrides"]] if obj.get("measureDefinitionOverrides") is not None else None, - "measures": [MeasureItem.from_dict(_item) for _item in obj["measures"]] if obj.get("measures") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_cancel_tokens.py b/gooddata-api-client/gooddata_api_client/models/afm_cancel_tokens.py deleted file mode 100644 index 172cece16..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_cancel_tokens.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AfmCancelTokens(BaseModel): - """ - Any information related to cancellation. - """ # noqa: E501 - result_id_to_cancel_token_pairs: Dict[str, StrictStr] = Field(description="resultId to cancel token pairs", alias="resultIdToCancelTokenPairs") - __properties: ClassVar[List[str]] = ["resultIdToCancelTokenPairs"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmCancelTokens from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmCancelTokens from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "resultIdToCancelTokenPairs": obj.get("resultIdToCancelTokenPairs") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_execution.py b/gooddata-api-client/gooddata_api_client/models/afm_execution.py deleted file mode 100644 index 3ea1595b9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_execution.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm import AFM -from gooddata_api_client.models.execution_settings import ExecutionSettings -from gooddata_api_client.models.result_spec import ResultSpec -from typing import Optional, Set -from typing_extensions import Self - -class AfmExecution(BaseModel): - """ - AfmExecution - """ # noqa: E501 - execution: AFM - result_spec: ResultSpec = Field(alias="resultSpec") - settings: Optional[ExecutionSettings] = None - __properties: ClassVar[List[str]] = ["execution", "resultSpec", "settings"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmExecution from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of execution - if self.execution: - _dict['execution'] = self.execution.to_dict() - # override the default output from pydantic by calling `to_dict()` of result_spec - if self.result_spec: - _dict['resultSpec'] = self.result_spec.to_dict() - # override the default output from pydantic by calling `to_dict()` of settings - if self.settings: - _dict['settings'] = self.settings.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmExecution from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "execution": AFM.from_dict(obj["execution"]) if obj.get("execution") is not None else None, - "resultSpec": ResultSpec.from_dict(obj["resultSpec"]) if obj.get("resultSpec") is not None else None, - "settings": ExecutionSettings.from_dict(obj["settings"]) if obj.get("settings") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_execution_response.py b/gooddata-api-client/gooddata_api_client/models/afm_execution_response.py deleted file mode 100644 index 6339b2cdd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_execution_response.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_response import ExecutionResponse -from typing import Optional, Set -from typing_extensions import Self - -class AfmExecutionResponse(BaseModel): - """ - Response to AFM execution request - """ # noqa: E501 - execution_response: ExecutionResponse = Field(alias="executionResponse") - __properties: ClassVar[List[str]] = ["executionResponse"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmExecutionResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of execution_response - if self.execution_response: - _dict['executionResponse'] = self.execution_response.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmExecutionResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "executionResponse": ExecutionResponse.from_dict(obj["executionResponse"]) if obj.get("executionResponse") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_filters_inner.py b/gooddata-api-client/gooddata_api_client/models/afm_filters_inner.py deleted file mode 100644 index 57571b871..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_filters_inner.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.abstract_measure_value_filter import AbstractMeasureValueFilter -from gooddata_api_client.models.filter_definition_for_simple_measure import FilterDefinitionForSimpleMeasure -from gooddata_api_client.models.inline_filter_definition import InlineFilterDefinition -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AFMFILTERSINNER_ONE_OF_SCHEMAS = ["AbstractMeasureValueFilter", "FilterDefinitionForSimpleMeasure", "InlineFilterDefinition"] - -class AFMFiltersInner(BaseModel): - """ - AFMFiltersInner - """ - # data type: AbstractMeasureValueFilter - oneof_schema_1_validator: Optional[AbstractMeasureValueFilter] = None - # data type: FilterDefinitionForSimpleMeasure - oneof_schema_2_validator: Optional[FilterDefinitionForSimpleMeasure] = None - # data type: InlineFilterDefinition - oneof_schema_3_validator: Optional[InlineFilterDefinition] = None - actual_instance: Optional[Union[AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition]] = None - one_of_schemas: Set[str] = { "AbstractMeasureValueFilter", "FilterDefinitionForSimpleMeasure", "InlineFilterDefinition" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AFMFiltersInner.model_construct() - error_messages = [] - match = 0 - # validate data type: AbstractMeasureValueFilter - if not isinstance(v, AbstractMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AbstractMeasureValueFilter`") - else: - match += 1 - # validate data type: FilterDefinitionForSimpleMeasure - if not isinstance(v, FilterDefinitionForSimpleMeasure): - error_messages.append(f"Error! Input type `{type(v)}` is not `FilterDefinitionForSimpleMeasure`") - else: - match += 1 - # validate data type: InlineFilterDefinition - if not isinstance(v, InlineFilterDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `InlineFilterDefinition`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AFMFiltersInner with oneOf schemas: AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AbstractMeasureValueFilter - try: - if match == 0: - instance.actual_instance = AbstractMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into FilterDefinitionForSimpleMeasure - try: - if match == 0: - instance.actual_instance = FilterDefinitionForSimpleMeasure.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into InlineFilterDefinition - try: - if match == 0: - instance.actual_instance = InlineFilterDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AFMFiltersInner with oneOf schemas: AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_identifier.py deleted file mode 100644 index fa8cdd0ae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_identifier.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.afm_local_identifier import AfmLocalIdentifier -from gooddata_api_client.models.afm_object_identifier import AfmObjectIdentifier -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AFMIDENTIFIER_ONE_OF_SCHEMAS = ["AfmLocalIdentifier", "AfmObjectIdentifier"] - -class AfmIdentifier(BaseModel): - """ - Reference to the attribute label to which the filter should be applied. - """ - # data type: AfmObjectIdentifier - oneof_schema_1_validator: Optional[AfmObjectIdentifier] = None - # data type: AfmLocalIdentifier - oneof_schema_2_validator: Optional[AfmLocalIdentifier] = None - actual_instance: Optional[Union[AfmLocalIdentifier, AfmObjectIdentifier]] = None - one_of_schemas: Set[str] = { "AfmLocalIdentifier", "AfmObjectIdentifier" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AfmIdentifier.model_construct() - error_messages = [] - match = 0 - # validate data type: AfmObjectIdentifier - if not isinstance(v, AfmObjectIdentifier): - error_messages.append(f"Error! Input type `{type(v)}` is not `AfmObjectIdentifier`") - else: - match += 1 - # validate data type: AfmLocalIdentifier - if not isinstance(v, AfmLocalIdentifier): - error_messages.append(f"Error! Input type `{type(v)}` is not `AfmLocalIdentifier`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AfmIdentifier with oneOf schemas: AfmLocalIdentifier, AfmObjectIdentifier. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AfmObjectIdentifier - try: - if match == 0: - instance.actual_instance = AfmObjectIdentifier.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AfmLocalIdentifier - try: - if match == 0: - instance.actual_instance = AfmLocalIdentifier.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AfmIdentifier with oneOf schemas: AfmLocalIdentifier, AfmObjectIdentifier. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AfmLocalIdentifier, AfmObjectIdentifier]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_local_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_local_identifier.py deleted file mode 100644 index 0a558d0d4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_local_identifier.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AfmLocalIdentifier(BaseModel): - """ - AfmLocalIdentifier - """ # noqa: E501 - local_identifier: Annotated[str, Field(strict=True)] = Field(alias="localIdentifier") - __properties: ClassVar[List[str]] = ["localIdentifier"] - - @field_validator('local_identifier') - def local_identifier_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[.a-zA-Z0-9_-]+$", value): - raise ValueError(r"must validate the regular expression /^[.a-zA-Z0-9_-]+$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmLocalIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmLocalIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "localIdentifier": obj.get("localIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier.py deleted file mode 100644 index ca9a3106d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_identifier import AfmObjectIdentifierIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifier(BaseModel): - """ - ObjectIdentifier with `identifier` wrapper. This serves to distinguish MD object identifiers in AFM request from local identifiers. - """ # noqa: E501 - identifier: AfmObjectIdentifierIdentifier - __properties: ClassVar[List[str]] = ["identifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": AfmObjectIdentifierIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute.py deleted file mode 100644 index 1875d835d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_attribute_identifier import AfmObjectIdentifierAttributeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierAttribute(BaseModel): - """ - Reference to the date attribute to use. - """ # noqa: E501 - identifier: AfmObjectIdentifierAttributeIdentifier - __properties: ClassVar[List[str]] = ["identifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierAttribute from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierAttribute from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": AfmObjectIdentifierAttributeIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute_identifier.py deleted file mode 100644 index 6af85f2ec..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_attribute_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierAttributeIdentifier(BaseModel): - """ - AfmObjectIdentifierAttributeIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierAttributeIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierAttributeIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core.py deleted file mode 100644 index 3a4397fe3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_core_identifier import AfmObjectIdentifierCoreIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierCore(BaseModel): - """ - Reference to the metric, fact or attribute object to use for the metric. - """ # noqa: E501 - identifier: AfmObjectIdentifierCoreIdentifier - __properties: ClassVar[List[str]] = ["identifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierCore from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierCore from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": AfmObjectIdentifierCoreIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core_identifier.py deleted file mode 100644 index 2fb6ec41e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_core_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierCoreIdentifier(BaseModel): - """ - AfmObjectIdentifierCoreIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute', 'label', 'fact', 'metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute', 'label', 'fact', 'metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierCoreIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierCoreIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset.py deleted file mode 100644 index 0cda35c5d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_dataset_identifier import AfmObjectIdentifierDatasetIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierDataset(BaseModel): - """ - Reference to the date dataset to which the filter should be applied. - """ # noqa: E501 - identifier: AfmObjectIdentifierDatasetIdentifier - __properties: ClassVar[List[str]] = ["identifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": AfmObjectIdentifierDatasetIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset_identifier.py deleted file mode 100644 index de39a03be..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_dataset_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierDatasetIdentifier(BaseModel): - """ - AfmObjectIdentifierDatasetIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierDatasetIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierDatasetIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_identifier.py deleted file mode 100644 index 70b4f1ada..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierIdentifier(BaseModel): - """ - AfmObjectIdentifierIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard', 'attribute', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'prompt', 'visualizationObject', 'filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard', 'attribute', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'prompt', 'visualizationObject', 'filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label.py deleted file mode 100644 index 6df69a95f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_label_identifier import AfmObjectIdentifierLabelIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierLabel(BaseModel): - """ - AfmObjectIdentifierLabel - """ # noqa: E501 - identifier: AfmObjectIdentifierLabelIdentifier - __properties: ClassVar[List[str]] = ["identifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierLabel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierLabel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": AfmObjectIdentifierLabelIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label_identifier.py b/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label_identifier.py deleted file mode 100644 index babeb585a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_object_identifier_label_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AfmObjectIdentifierLabelIdentifier(BaseModel): - """ - AfmObjectIdentifierLabelIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['label']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('label')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierLabelIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmObjectIdentifierLabelIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_query.py b/gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_query.py deleted file mode 100644 index 6ca770624..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_query.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_attribute import AfmObjectIdentifierAttribute -from typing import Optional, Set -from typing_extensions import Self - -class AfmValidDescendantsQuery(BaseModel): - """ - Entity describing the valid descendants request. - """ # noqa: E501 - attributes: List[AfmObjectIdentifierAttribute] = Field(description="List of identifiers of the attributes to get the valid descendants for.") - __properties: ClassVar[List[str]] = ["attributes"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmValidDescendantsQuery from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmValidDescendantsQuery from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": [AfmObjectIdentifierAttribute.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_response.py b/gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_response.py deleted file mode 100644 index 3b9aefc83..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_valid_descendants_response.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_attribute import AfmObjectIdentifierAttribute -from typing import Optional, Set -from typing_extensions import Self - -class AfmValidDescendantsResponse(BaseModel): - """ - Entity describing the valid descendants response. - """ # noqa: E501 - valid_descendants: Dict[str, List[AfmObjectIdentifierAttribute]] = Field(description="Map of attribute identifiers to list of valid descendants identifiers.", alias="validDescendants") - __properties: ClassVar[List[str]] = ["validDescendants"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmValidDescendantsResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in valid_descendants (dict of array) - _field_dict_of_array = {} - if self.valid_descendants: - for _key_valid_descendants in self.valid_descendants: - if self.valid_descendants[_key_valid_descendants] is not None: - _field_dict_of_array[_key_valid_descendants] = [ - _item.to_dict() for _item in self.valid_descendants[_key_valid_descendants] - ] - _dict['validDescendants'] = _field_dict_of_array - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmValidDescendantsResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "validDescendants": dict( - (_k, - [AfmObjectIdentifierAttribute.from_dict(_item) for _item in _v] - if _v is not None - else None - ) - for _k, _v in obj.get("validDescendants", {}).items() - ) - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_valid_objects_query.py b/gooddata-api-client/gooddata_api_client/models/afm_valid_objects_query.py deleted file mode 100644 index d6cd50913..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_valid_objects_query.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm import AFM -from typing import Optional, Set -from typing_extensions import Self - -class AfmValidObjectsQuery(BaseModel): - """ - Entity holding AFM and list of object types whose validity should be computed. - """ # noqa: E501 - afm: AFM - types: List[StrictStr] - __properties: ClassVar[List[str]] = ["afm", "types"] - - @field_validator('types') - def types_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['facts', 'attributes', 'measures']): - raise ValueError("each list item must be one of ('facts', 'attributes', 'measures')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmValidObjectsQuery from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of afm - if self.afm: - _dict['afm'] = self.afm.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmValidObjectsQuery from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "afm": AFM.from_dict(obj["afm"]) if obj.get("afm") is not None else None, - "types": obj.get("types") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/afm_valid_objects_response.py b/gooddata-api-client/gooddata_api_client/models/afm_valid_objects_response.py deleted file mode 100644 index 382b556eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/afm_valid_objects_response.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.rest_api_identifier import RestApiIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AfmValidObjectsResponse(BaseModel): - """ - All objects of specified types valid with respect to given AFM. - """ # noqa: E501 - items: List[RestApiIdentifier] - __properties: ClassVar[List[str]] = ["items"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AfmValidObjectsResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in items (list) - _items = [] - if self.items: - for _item_items in self.items: - if _item_items: - _items.append(_item_items.to_dict()) - _dict['items'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AfmValidObjectsResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "items": [RestApiIdentifier.from_dict(_item) for _item in obj["items"]] if obj.get("items") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/alert_afm.py b/gooddata-api-client/gooddata_api_client/models/alert_afm.py deleted file mode 100644 index 42e3f52b7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/alert_afm.py +++ /dev/null @@ -1,125 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.attribute_item import AttributeItem -from gooddata_api_client.models.filter_definition import FilterDefinition -from gooddata_api_client.models.measure_item import MeasureItem -from typing import Optional, Set -from typing_extensions import Self - -class AlertAfm(BaseModel): - """ - AlertAfm - """ # noqa: E501 - attributes: Optional[List[AttributeItem]] = Field(default=None, description="Attributes to be used in the computation.") - aux_measures: Optional[List[MeasureItem]] = Field(default=None, description="Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", alias="auxMeasures") - filters: List[FilterDefinition] = Field(description="Various filter types to filter execution result. For anomaly detection, exactly one dataset is specified in the condition. The AFM may contain multiple date filters for different datasets, but only the date filter matching the dataset from the condition is used for anomaly detection.") - measures: List[MeasureItem] = Field(description="Metrics to be computed. One metric if the alert condition is evaluated to a scalar. Two metrics when they should be evaluated to each other.") - __properties: ClassVar[List[str]] = ["attributes", "auxMeasures", "filters", "measures"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlertAfm from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in aux_measures (list) - _items = [] - if self.aux_measures: - for _item_aux_measures in self.aux_measures: - if _item_aux_measures: - _items.append(_item_aux_measures.to_dict()) - _dict['auxMeasures'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in measures (list) - _items = [] - if self.measures: - for _item_measures in self.measures: - if _item_measures: - _items.append(_item_measures.to_dict()) - _dict['measures'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlertAfm from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": [AttributeItem.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None, - "auxMeasures": [MeasureItem.from_dict(_item) for _item in obj["auxMeasures"]] if obj.get("auxMeasures") is not None else None, - "filters": [FilterDefinition.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "measures": [MeasureItem.from_dict(_item) for _item in obj["measures"]] if obj.get("measures") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/alert_condition.py b/gooddata-api-client/gooddata_api_client/models/alert_condition.py deleted file mode 100644 index 27d1e8db3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/alert_condition.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.anomaly_detection_wrapper import AnomalyDetectionWrapper -from gooddata_api_client.models.comparison_wrapper import ComparisonWrapper -from gooddata_api_client.models.range_wrapper import RangeWrapper -from gooddata_api_client.models.relative_wrapper import RelativeWrapper -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -ALERTCONDITION_ONE_OF_SCHEMAS = ["AnomalyDetectionWrapper", "ComparisonWrapper", "RangeWrapper", "RelativeWrapper"] - -class AlertCondition(BaseModel): - """ - Alert trigger condition. - """ - # data type: ComparisonWrapper - oneof_schema_1_validator: Optional[ComparisonWrapper] = None - # data type: RangeWrapper - oneof_schema_2_validator: Optional[RangeWrapper] = None - # data type: RelativeWrapper - oneof_schema_3_validator: Optional[RelativeWrapper] = None - # data type: AnomalyDetectionWrapper - oneof_schema_4_validator: Optional[AnomalyDetectionWrapper] = None - actual_instance: Optional[Union[AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper]] = None - one_of_schemas: Set[str] = { "AnomalyDetectionWrapper", "ComparisonWrapper", "RangeWrapper", "RelativeWrapper" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AlertCondition.model_construct() - error_messages = [] - match = 0 - # validate data type: ComparisonWrapper - if not isinstance(v, ComparisonWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `ComparisonWrapper`") - else: - match += 1 - # validate data type: RangeWrapper - if not isinstance(v, RangeWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `RangeWrapper`") - else: - match += 1 - # validate data type: RelativeWrapper - if not isinstance(v, RelativeWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `RelativeWrapper`") - else: - match += 1 - # validate data type: AnomalyDetectionWrapper - if not isinstance(v, AnomalyDetectionWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `AnomalyDetectionWrapper`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AlertCondition with oneOf schemas: AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into ComparisonWrapper - try: - if match == 0: - instance.actual_instance = ComparisonWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RangeWrapper - try: - if match == 0: - instance.actual_instance = RangeWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RelativeWrapper - try: - if match == 0: - instance.actual_instance = RelativeWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AnomalyDetectionWrapper - try: - if match == 0: - instance.actual_instance = AnomalyDetectionWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AlertCondition with oneOf schemas: AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/alert_condition_operand.py b/gooddata-api-client/gooddata_api_client/models/alert_condition_operand.py deleted file mode 100644 index da4761c27..000000000 --- a/gooddata-api-client/gooddata_api_client/models/alert_condition_operand.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.local_identifier import LocalIdentifier -from gooddata_api_client.models.value import Value -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -ALERTCONDITIONOPERAND_ONE_OF_SCHEMAS = ["LocalIdentifier", "Value"] - -class AlertConditionOperand(BaseModel): - """ - Operand of the alert condition. - """ - # data type: LocalIdentifier - oneof_schema_1_validator: Optional[LocalIdentifier] = None - # data type: Value - oneof_schema_2_validator: Optional[Value] = None - actual_instance: Optional[Union[LocalIdentifier, Value]] = None - one_of_schemas: Set[str] = { "LocalIdentifier", "Value" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AlertConditionOperand.model_construct() - error_messages = [] - match = 0 - # validate data type: LocalIdentifier - if not isinstance(v, LocalIdentifier): - error_messages.append(f"Error! Input type `{type(v)}` is not `LocalIdentifier`") - else: - match += 1 - # validate data type: Value - if not isinstance(v, Value): - error_messages.append(f"Error! Input type `{type(v)}` is not `Value`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AlertConditionOperand with oneOf schemas: LocalIdentifier, Value. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into LocalIdentifier - try: - if match == 0: - instance.actual_instance = LocalIdentifier.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Value - try: - if match == 0: - instance.actual_instance = Value.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AlertConditionOperand with oneOf schemas: LocalIdentifier, Value. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], LocalIdentifier, Value]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/alert_description.py b/gooddata-api-client/gooddata_api_client/models/alert_description.py deleted file mode 100644 index e58e6436d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/alert_description.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional, Union -from gooddata_api_client.models.alert_evaluation_row import AlertEvaluationRow -from typing import Optional, Set -from typing_extensions import Self - -class AlertDescription(BaseModel): - """ - AlertDescription - """ # noqa: E501 - attribute: Optional[StrictStr] = None - condition: StrictStr - current_values: Optional[List[AlertEvaluationRow]] = Field(default=None, alias="currentValues") - error_message: Optional[StrictStr] = Field(default=None, alias="errorMessage") - formatted_threshold: Optional[StrictStr] = Field(default=None, alias="formattedThreshold") - lower_threshold: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, alias="lowerThreshold") - metric: StrictStr - remaining_alert_evaluation_count: Optional[StrictInt] = Field(default=None, alias="remainingAlertEvaluationCount") - status: Optional[StrictStr] = None - threshold: Optional[Union[StrictFloat, StrictInt]] = None - total_value_count: Optional[StrictInt] = Field(default=None, alias="totalValueCount") - trace_id: Optional[StrictStr] = Field(default=None, alias="traceId") - triggered_at: Optional[datetime] = Field(default=None, alias="triggeredAt") - triggered_count: Optional[StrictInt] = Field(default=None, alias="triggeredCount") - upper_threshold: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, alias="upperThreshold") - __properties: ClassVar[List[str]] = ["attribute", "condition", "currentValues", "errorMessage", "formattedThreshold", "lowerThreshold", "metric", "remainingAlertEvaluationCount", "status", "threshold", "totalValueCount", "traceId", "triggeredAt", "triggeredCount", "upperThreshold"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SUCCESS', 'ERROR', 'INTERNAL_ERROR', 'TIMEOUT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUCCESS', 'ERROR', 'INTERNAL_ERROR', 'TIMEOUT')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlertDescription from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in current_values (list) - _items = [] - if self.current_values: - for _item_current_values in self.current_values: - if _item_current_values: - _items.append(_item_current_values.to_dict()) - _dict['currentValues'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlertDescription from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": obj.get("attribute"), - "condition": obj.get("condition"), - "currentValues": [AlertEvaluationRow.from_dict(_item) for _item in obj["currentValues"]] if obj.get("currentValues") is not None else None, - "errorMessage": obj.get("errorMessage"), - "formattedThreshold": obj.get("formattedThreshold"), - "lowerThreshold": obj.get("lowerThreshold"), - "metric": obj.get("metric"), - "remainingAlertEvaluationCount": obj.get("remainingAlertEvaluationCount"), - "status": obj.get("status"), - "threshold": obj.get("threshold"), - "totalValueCount": obj.get("totalValueCount"), - "traceId": obj.get("traceId"), - "triggeredAt": obj.get("triggeredAt"), - "triggeredCount": obj.get("triggeredCount"), - "upperThreshold": obj.get("upperThreshold") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/alert_evaluation_row.py b/gooddata-api-client/gooddata_api_client/models/alert_evaluation_row.py deleted file mode 100644 index 25ec4900d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/alert_evaluation_row.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.metric_record import MetricRecord -from typing import Optional, Set -from typing_extensions import Self - -class AlertEvaluationRow(BaseModel): - """ - AlertEvaluationRow - """ # noqa: E501 - computed_metric: Optional[MetricRecord] = Field(default=None, alias="computedMetric") - label_value: Optional[StrictStr] = Field(default=None, alias="labelValue") - primary_metric: Optional[MetricRecord] = Field(default=None, alias="primaryMetric") - secondary_metric: Optional[MetricRecord] = Field(default=None, alias="secondaryMetric") - __properties: ClassVar[List[str]] = ["computedMetric", "labelValue", "primaryMetric", "secondaryMetric"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AlertEvaluationRow from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of computed_metric - if self.computed_metric: - _dict['computedMetric'] = self.computed_metric.to_dict() - # override the default output from pydantic by calling `to_dict()` of primary_metric - if self.primary_metric: - _dict['primaryMetric'] = self.primary_metric.to_dict() - # override the default output from pydantic by calling `to_dict()` of secondary_metric - if self.secondary_metric: - _dict['secondaryMetric'] = self.secondary_metric.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AlertEvaluationRow from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "computedMetric": MetricRecord.from_dict(obj["computedMetric"]) if obj.get("computedMetric") is not None else None, - "labelValue": obj.get("labelValue"), - "primaryMetric": MetricRecord.from_dict(obj["primaryMetric"]) if obj.get("primaryMetric") is not None else None, - "secondaryMetric": MetricRecord.from_dict(obj["secondaryMetric"]) if obj.get("secondaryMetric") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/all_time_date_filter.py b/gooddata-api-client/gooddata_api_client/models/all_time_date_filter.py deleted file mode 100644 index d903052eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/all_time_date_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.all_time_date_filter_all_time_date_filter import AllTimeDateFilterAllTimeDateFilter -from typing import Optional, Set -from typing_extensions import Self - -class AllTimeDateFilter(BaseModel): - """ - An all-time date filter that does not restrict by date range. Controls how rows with empty (null/missing) date values are handled. - """ # noqa: E501 - all_time_date_filter: AllTimeDateFilterAllTimeDateFilter = Field(alias="allTimeDateFilter") - __properties: ClassVar[List[str]] = ["allTimeDateFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AllTimeDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of all_time_date_filter - if self.all_time_date_filter: - _dict['allTimeDateFilter'] = self.all_time_date_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AllTimeDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allTimeDateFilter": AllTimeDateFilterAllTimeDateFilter.from_dict(obj["allTimeDateFilter"]) if obj.get("allTimeDateFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/all_time_date_filter_all_time_date_filter.py b/gooddata-api-client/gooddata_api_client/models/all_time_date_filter_all_time_date_filter.py deleted file mode 100644 index 07b6ec077..000000000 --- a/gooddata-api-client/gooddata_api_client/models/all_time_date_filter_all_time_date_filter.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_object_identifier_dataset import AfmObjectIdentifierDataset -from typing import Optional, Set -from typing_extensions import Self - -class AllTimeDateFilterAllTimeDateFilter(BaseModel): - """ - AllTimeDateFilterAllTimeDateFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - dataset: AfmObjectIdentifierDataset - empty_value_handling: Optional[StrictStr] = Field(default='INCLUDE', description="Specifies how rows with empty (null/missing) date values should be handled. INCLUDE means no filtering effect (default), EXCLUDE removes rows with null dates, ONLY keeps only rows with null dates.", alias="emptyValueHandling") - granularity: Optional[StrictStr] = Field(default='DAY', description="Date granularity used to resolve the date attribute label for null value checks. Defaults to DAY if not specified.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - __properties: ClassVar[List[str]] = ["applyOnResult", "dataset", "emptyValueHandling", "granularity", "localIdentifier"] - - @field_validator('empty_value_handling') - def empty_value_handling_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INCLUDE', 'EXCLUDE', 'ONLY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCLUDE', 'EXCLUDE', 'ONLY')") - return value - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AllTimeDateFilterAllTimeDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AllTimeDateFilterAllTimeDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "dataset": AfmObjectIdentifierDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "emptyValueHandling": obj.get("emptyValueHandling") if obj.get("emptyValueHandling") is not None else 'INCLUDE', - "granularity": obj.get("granularity") if obj.get("granularity") is not None else 'DAY', - "localIdentifier": obj.get("localIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/allowed_relationship_type.py b/gooddata-api-client/gooddata_api_client/models/allowed_relationship_type.py deleted file mode 100644 index a954776ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/allowed_relationship_type.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AllowedRelationshipType(BaseModel): - """ - Allowed relationship type combination. - """ # noqa: E501 - allow_orphans: Optional[StrictBool] = Field(default=True, description="If true, allows target objects that are not part of any relationship (orphans) to be included in results. If false, orphan target objects will be excluded even if they directly match the search query. Default is true (orphans are allowed).", alias="allowOrphans") - source_type: StrictStr = Field(description="Source object type (e.g., 'dashboard', 'visualization', 'metric').", alias="sourceType") - target_type: StrictStr = Field(description="Target object type (e.g., 'visualization', 'metric', 'attribute').", alias="targetType") - __properties: ClassVar[List[str]] = ["allowOrphans", "sourceType", "targetType"] - - @field_validator('source_type') - def source_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard')") - return value - - @field_validator('target_type') - def target_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AllowedRelationshipType from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AllowedRelationshipType from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowOrphans": obj.get("allowOrphans") if obj.get("allowOrphans") is not None else True, - "sourceType": obj.get("sourceType"), - "targetType": obj.get("targetType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/analytics_catalog_created_by.py b/gooddata-api-client/gooddata_api_client/models/analytics_catalog_created_by.py deleted file mode 100644 index bb8102961..000000000 --- a/gooddata-api-client/gooddata_api_client/models/analytics_catalog_created_by.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.analytics_catalog_user import AnalyticsCatalogUser -from typing import Optional, Set -from typing_extensions import Self - -class AnalyticsCatalogCreatedBy(BaseModel): - """ - AnalyticsCatalogCreatedBy - """ # noqa: E501 - reasoning: StrictStr = Field(description="Reasoning for error states") - users: List[AnalyticsCatalogUser] = Field(description="Users who created any object in the catalog") - __properties: ClassVar[List[str]] = ["reasoning", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnalyticsCatalogCreatedBy from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnalyticsCatalogCreatedBy from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "reasoning": obj.get("reasoning"), - "users": [AnalyticsCatalogUser.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/analytics_catalog_tags.py b/gooddata-api-client/gooddata_api_client/models/analytics_catalog_tags.py deleted file mode 100644 index 829650dff..000000000 --- a/gooddata-api-client/gooddata_api_client/models/analytics_catalog_tags.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AnalyticsCatalogTags(BaseModel): - """ - AnalyticsCatalogTags - """ # noqa: E501 - tags: List[StrictStr] - __properties: ClassVar[List[str]] = ["tags"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnalyticsCatalogTags from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnalyticsCatalogTags from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "tags": obj.get("tags") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/analytics_catalog_user.py b/gooddata-api-client/gooddata_api_client/models/analytics_catalog_user.py deleted file mode 100644 index 1b776c6af..000000000 --- a/gooddata-api-client/gooddata_api_client/models/analytics_catalog_user.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AnalyticsCatalogUser(BaseModel): - """ - Users who created any object in the catalog - """ # noqa: E501 - firstname: StrictStr = Field(description="First name of the user who created any objects") - lastname: StrictStr = Field(description="Last name of the user who created any objects") - user_id: StrictStr = Field(description="User ID of the user who created any objects", alias="userId") - __properties: ClassVar[List[str]] = ["firstname", "lastname", "userId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnalyticsCatalogUser from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnalyticsCatalogUser from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "firstname": obj.get("firstname"), - "lastname": obj.get("lastname"), - "userId": obj.get("userId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/anomaly_detection.py b/gooddata-api-client/gooddata_api_client/models/anomaly_detection.py deleted file mode 100644 index e8be21d24..000000000 --- a/gooddata-api-client/gooddata_api_client/models/anomaly_detection.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_dataset import AfmObjectIdentifierDataset -from gooddata_api_client.models.local_identifier import LocalIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AnomalyDetection(BaseModel): - """ - AnomalyDetection - """ # noqa: E501 - dataset: AfmObjectIdentifierDataset - granularity: StrictStr = Field(description="Date granularity for anomaly detection. Only time-based granularities are supported (HOUR, DAY, WEEK, MONTH, QUARTER, YEAR).") - measure: LocalIdentifier - sensitivity: StrictStr = Field(description="Sensitivity level for anomaly detection") - __properties: ClassVar[List[str]] = ["dataset", "granularity", "measure", "sensitivity"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('sensitivity') - def sensitivity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['LOW', 'MEDIUM', 'HIGH']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('LOW', 'MEDIUM', 'HIGH')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnomalyDetection from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnomalyDetection from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataset": AfmObjectIdentifierDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "granularity": obj.get("granularity"), - "measure": LocalIdentifier.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "sensitivity": obj.get("sensitivity") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_config.py b/gooddata-api-client/gooddata_api_client/models/anomaly_detection_config.py deleted file mode 100644 index 6308933be..000000000 --- a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_config.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AnomalyDetectionConfig(BaseModel): - """ - Anomaly detection configuration. - """ # noqa: E501 - sensitivity: StrictStr = Field(description="Outlier sensitivity level.") - __properties: ClassVar[List[str]] = ["sensitivity"] - - @field_validator('sensitivity') - def sensitivity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['LOW', 'MEDIUM', 'HIGH']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('LOW', 'MEDIUM', 'HIGH')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnomalyDetectionConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnomalyDetectionConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sensitivity": obj.get("sensitivity") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_request.py b/gooddata-api-client/gooddata_api_client/models/anomaly_detection_request.py deleted file mode 100644 index 9e01b5b95..000000000 --- a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_request.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class AnomalyDetectionRequest(BaseModel): - """ - AnomalyDetectionRequest - """ # noqa: E501 - sensitivity: Union[StrictFloat, StrictInt] = Field(description="Anomaly detection sensitivity.") - __properties: ClassVar[List[str]] = ["sensitivity"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnomalyDetectionRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnomalyDetectionRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sensitivity": obj.get("sensitivity") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_result.py b/gooddata-api-client/gooddata_api_client/models/anomaly_detection_result.py deleted file mode 100644 index 89d96873a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_result.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class AnomalyDetectionResult(BaseModel): - """ - AnomalyDetectionResult - """ # noqa: E501 - anomaly_flag: List[Optional[StrictBool]] = Field(alias="anomalyFlag") - attribute: List[StrictStr] - values: List[Optional[Union[StrictFloat, StrictInt]]] - __properties: ClassVar[List[str]] = ["anomalyFlag", "attribute", "values"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnomalyDetectionResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnomalyDetectionResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "anomalyFlag": obj.get("anomalyFlag"), - "attribute": obj.get("attribute"), - "values": obj.get("values") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_wrapper.py b/gooddata-api-client/gooddata_api_client/models/anomaly_detection_wrapper.py deleted file mode 100644 index d17e7ab24..000000000 --- a/gooddata-api-client/gooddata_api_client/models/anomaly_detection_wrapper.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.anomaly_detection import AnomalyDetection -from typing import Optional, Set -from typing_extensions import Self - -class AnomalyDetectionWrapper(BaseModel): - """ - AnomalyDetectionWrapper - """ # noqa: E501 - anomaly: AnomalyDetection - __properties: ClassVar[List[str]] = ["anomaly"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AnomalyDetectionWrapper from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of anomaly - if self.anomaly: - _dict['anomaly'] = self.anomaly.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AnomalyDetectionWrapper from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "anomaly": AnomalyDetection.from_dict(obj["anomaly"]) if obj.get("anomaly") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/api_entitlement.py b/gooddata-api-client/gooddata_api_client/models/api_entitlement.py deleted file mode 100644 index 384a83cf5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/api_entitlement.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import date -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ApiEntitlement(BaseModel): - """ - ApiEntitlement - """ # noqa: E501 - expiry: Optional[date] = None - name: StrictStr - value: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["expiry", "name", "value"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['CacheStrategy', 'Contract', 'CustomTheming', 'ExtraCache', 'Hipaa', 'PdfExports', 'UiLocalization', 'Tier', 'UserCount', 'ManagedIdpUserCount', 'UnlimitedUsers', 'UnlimitedWorkspaces', 'WhiteLabeling', 'WorkspaceCount', 'UserTelemetryDisabled', 'AutomationCount', 'UnlimitedAutomations', 'AutomationRecipientCount', 'UnlimitedAutomationRecipients', 'DailyScheduledActionCount', 'UnlimitedDailyScheduledActions', 'DailyAlertActionCount', 'UnlimitedDailyAlertActions', 'ScheduledActionMinimumRecurrenceMinutes', 'FederatedIdentityManagement', 'AuditLogging', 'ControlledFeatureRollout', 'AiLake']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CacheStrategy', 'Contract', 'CustomTheming', 'ExtraCache', 'Hipaa', 'PdfExports', 'UiLocalization', 'Tier', 'UserCount', 'ManagedIdpUserCount', 'UnlimitedUsers', 'UnlimitedWorkspaces', 'WhiteLabeling', 'WorkspaceCount', 'UserTelemetryDisabled', 'AutomationCount', 'UnlimitedAutomations', 'AutomationRecipientCount', 'UnlimitedAutomationRecipients', 'DailyScheduledActionCount', 'UnlimitedDailyScheduledActions', 'DailyAlertActionCount', 'UnlimitedDailyAlertActions', 'ScheduledActionMinimumRecurrenceMinutes', 'FederatedIdentityManagement', 'AuditLogging', 'ControlledFeatureRollout', 'AiLake')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ApiEntitlement from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ApiEntitlement from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "expiry": obj.get("expiry"), - "name": obj.get("name"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/arithmetic_measure.py b/gooddata-api-client/gooddata_api_client/models/arithmetic_measure.py deleted file mode 100644 index 4b5192f74..000000000 --- a/gooddata-api-client/gooddata_api_client/models/arithmetic_measure.py +++ /dev/null @@ -1,107 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.local_identifier import LocalIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class ArithmeticMeasure(BaseModel): - """ - ArithmeticMeasure - """ # noqa: E501 - left: LocalIdentifier - operator: StrictStr = Field(description="Arithmetic operator. DIFFERENCE - m₁−m₂ - the difference between two metrics. CHANGE - (m₁−m₂)÷m₂ - the relative difference between two metrics. ") - right: LocalIdentifier - __properties: ClassVar[List[str]] = ["left", "operator", "right"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['DIFFERENCE', 'CHANGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DIFFERENCE', 'CHANGE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ArithmeticMeasure from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of left - if self.left: - _dict['left'] = self.left.to_dict() - # override the default output from pydantic by calling `to_dict()` of right - if self.right: - _dict['right'] = self.right.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ArithmeticMeasure from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "left": LocalIdentifier.from_dict(obj["left"]) if obj.get("left") is not None else None, - "operator": obj.get("operator"), - "right": LocalIdentifier.from_dict(obj["right"]) if obj.get("right") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition.py b/gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition.py deleted file mode 100644 index 419cb2c14..000000000 --- a/gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.arithmetic_measure_definition_arithmetic_measure import ArithmeticMeasureDefinitionArithmeticMeasure -from typing import Optional, Set -from typing_extensions import Self - -class ArithmeticMeasureDefinition(BaseModel): - """ - Metric representing arithmetics between other metrics. - """ # noqa: E501 - arithmetic_measure: ArithmeticMeasureDefinitionArithmeticMeasure = Field(alias="arithmeticMeasure") - __properties: ClassVar[List[str]] = ["arithmeticMeasure"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ArithmeticMeasureDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of arithmetic_measure - if self.arithmetic_measure: - _dict['arithmeticMeasure'] = self.arithmetic_measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ArithmeticMeasureDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "arithmeticMeasure": ArithmeticMeasureDefinitionArithmeticMeasure.from_dict(obj["arithmeticMeasure"]) if obj.get("arithmeticMeasure") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition_arithmetic_measure.py b/gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition_arithmetic_measure.py deleted file mode 100644 index 317a7bca3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/arithmetic_measure_definition_arithmetic_measure.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_local_identifier import AfmLocalIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class ArithmeticMeasureDefinitionArithmeticMeasure(BaseModel): - """ - ArithmeticMeasureDefinitionArithmeticMeasure - """ # noqa: E501 - measure_identifiers: List[AfmLocalIdentifier] = Field(description="List of metrics to apply arithmetic operation by chosen operator.", alias="measureIdentifiers") - operator: StrictStr = Field(description="Arithmetic operator describing operation between metrics.") - __properties: ClassVar[List[str]] = ["measureIdentifiers", "operator"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SUM', 'DIFFERENCE', 'MULTIPLICATION', 'RATIO', 'CHANGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUM', 'DIFFERENCE', 'MULTIPLICATION', 'RATIO', 'CHANGE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ArithmeticMeasureDefinitionArithmeticMeasure from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in measure_identifiers (list) - _items = [] - if self.measure_identifiers: - for _item_measure_identifiers in self.measure_identifiers: - if _item_measure_identifiers: - _items.append(_item_measure_identifiers.to_dict()) - _dict['measureIdentifiers'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ArithmeticMeasureDefinitionArithmeticMeasure from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "measureIdentifiers": [AfmLocalIdentifier.from_dict(_item) for _item in obj["measureIdentifiers"]] if obj.get("measureIdentifiers") is not None else None, - "operator": obj.get("operator") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/assignee_identifier.py b/gooddata-api-client/gooddata_api_client/models/assignee_identifier.py deleted file mode 100644 index 864080dbf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/assignee_identifier.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AssigneeIdentifier(BaseModel): - """ - Identifier of a user or user-group. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user', 'userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user', 'userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AssigneeIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AssigneeIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/assignee_rule.py b/gooddata-api-client/gooddata_api_client/models/assignee_rule.py deleted file mode 100644 index 7d77a6a79..000000000 --- a/gooddata-api-client/gooddata_api_client/models/assignee_rule.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AssigneeRule(BaseModel): - """ - Identifier of an assignee rule. - """ # noqa: E501 - type: StrictStr - __properties: ClassVar[List[str]] = ["type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['allWorkspaceUsers']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('allWorkspaceUsers')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AssigneeRule from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AssigneeRule from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_elements.py b/gooddata-api-client/gooddata_api_client/models/attribute_elements.py deleted file mode 100644 index 0af3b8213..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_elements.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.attribute_elements_by_ref import AttributeElementsByRef -from gooddata_api_client.models.attribute_elements_by_value import AttributeElementsByValue -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -ATTRIBUTEELEMENTS_ONE_OF_SCHEMAS = ["AttributeElementsByRef", "AttributeElementsByValue"] - -class AttributeElements(BaseModel): - """ - AttributeElements - """ - # data type: AttributeElementsByRef - oneof_schema_1_validator: Optional[AttributeElementsByRef] = None - # data type: AttributeElementsByValue - oneof_schema_2_validator: Optional[AttributeElementsByValue] = None - actual_instance: Optional[Union[AttributeElementsByRef, AttributeElementsByValue]] = None - one_of_schemas: Set[str] = { "AttributeElementsByRef", "AttributeElementsByValue" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AttributeElements.model_construct() - error_messages = [] - match = 0 - # validate data type: AttributeElementsByRef - if not isinstance(v, AttributeElementsByRef): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributeElementsByRef`") - else: - match += 1 - # validate data type: AttributeElementsByValue - if not isinstance(v, AttributeElementsByValue): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributeElementsByValue`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AttributeElements with oneOf schemas: AttributeElementsByRef, AttributeElementsByValue. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AttributeElementsByRef - try: - if match == 0: - instance.actual_instance = AttributeElementsByRef.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AttributeElementsByValue - try: - if match == 0: - instance.actual_instance = AttributeElementsByValue.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AttributeElements with oneOf schemas: AttributeElementsByRef, AttributeElementsByValue. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AttributeElementsByRef, AttributeElementsByValue]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_elements_by_ref.py b/gooddata-api-client/gooddata_api_client/models/attribute_elements_by_ref.py deleted file mode 100644 index 6f4f6b35f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_elements_by_ref.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AttributeElementsByRef(BaseModel): - """ - AttributeElementsByRef - """ # noqa: E501 - uris: List[Optional[StrictStr]] = Field(description="List of attribute elements by reference") - __properties: ClassVar[List[str]] = ["uris"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeElementsByRef from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeElementsByRef from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "uris": obj.get("uris") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_elements_by_value.py b/gooddata-api-client/gooddata_api_client/models/attribute_elements_by_value.py deleted file mode 100644 index 253315428..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_elements_by_value.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AttributeElementsByValue(BaseModel): - """ - AttributeElementsByValue - """ # noqa: E501 - values: List[Optional[StrictStr]] = Field(description="List of attribute elements by value") - __properties: ClassVar[List[str]] = ["values"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeElementsByValue from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeElementsByValue from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "values": obj.get("values") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_execution_result_header.py b/gooddata-api-client/gooddata_api_client/models/attribute_execution_result_header.py deleted file mode 100644 index e12412392..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_execution_result_header.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.attribute_result_header import AttributeResultHeader -from typing import Optional, Set -from typing_extensions import Self - -class AttributeExecutionResultHeader(BaseModel): - """ - AttributeExecutionResultHeader - """ # noqa: E501 - attribute_header: AttributeResultHeader = Field(alias="attributeHeader") - __properties: ClassVar[List[str]] = ["attributeHeader"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeExecutionResultHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute_header - if self.attribute_header: - _dict['attributeHeader'] = self.attribute_header.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeExecutionResultHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeHeader": AttributeResultHeader.from_dict(obj["attributeHeader"]) if obj.get("attributeHeader") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/attribute_filter.py deleted file mode 100644 index 4cb99b8d4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_filter.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.match_attribute_filter import MatchAttributeFilter -from gooddata_api_client.models.negative_attribute_filter import NegativeAttributeFilter -from gooddata_api_client.models.positive_attribute_filter import PositiveAttributeFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -ATTRIBUTEFILTER_ONE_OF_SCHEMAS = ["MatchAttributeFilter", "NegativeAttributeFilter", "PositiveAttributeFilter"] - -class AttributeFilter(BaseModel): - """ - Abstract filter definition type attributes - """ - # data type: NegativeAttributeFilter - oneof_schema_1_validator: Optional[NegativeAttributeFilter] = None - # data type: PositiveAttributeFilter - oneof_schema_2_validator: Optional[PositiveAttributeFilter] = None - # data type: MatchAttributeFilter - oneof_schema_3_validator: Optional[MatchAttributeFilter] = None - actual_instance: Optional[Union[MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter]] = None - one_of_schemas: Set[str] = { "MatchAttributeFilter", "NegativeAttributeFilter", "PositiveAttributeFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AttributeFilter.model_construct() - error_messages = [] - match = 0 - # validate data type: NegativeAttributeFilter - if not isinstance(v, NegativeAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `NegativeAttributeFilter`") - else: - match += 1 - # validate data type: PositiveAttributeFilter - if not isinstance(v, PositiveAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `PositiveAttributeFilter`") - else: - match += 1 - # validate data type: MatchAttributeFilter - if not isinstance(v, MatchAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `MatchAttributeFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AttributeFilter with oneOf schemas: MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into NegativeAttributeFilter - try: - if match == 0: - instance.actual_instance = NegativeAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PositiveAttributeFilter - try: - if match == 0: - instance.actual_instance = PositiveAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into MatchAttributeFilter - try: - if match == 0: - instance.actual_instance = MatchAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AttributeFilter with oneOf schemas: MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_filter_by_date.py b/gooddata-api-client/gooddata_api_client/models/attribute_filter_by_date.py deleted file mode 100644 index 419cd5d07..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_filter_by_date.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AttributeFilterByDate(BaseModel): - """ - AttributeFilterByDate - """ # noqa: E501 - filter_local_identifier: StrictStr = Field(alias="filterLocalIdentifier") - is_common_date: StrictBool = Field(alias="isCommonDate") - __properties: ClassVar[List[str]] = ["filterLocalIdentifier", "isCommonDate"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeFilterByDate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeFilterByDate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filterLocalIdentifier": obj.get("filterLocalIdentifier"), - "isCommonDate": obj.get("isCommonDate") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_filter_elements.py b/gooddata-api-client/gooddata_api_client/models/attribute_filter_elements.py deleted file mode 100644 index 581142358..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_filter_elements.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AttributeFilterElements(BaseModel): - """ - Filter on specific set of label values. - """ # noqa: E501 - values: List[Optional[StrictStr]] = Field(description="Set of label values.") - __properties: ClassVar[List[str]] = ["values"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeFilterElements from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeFilterElements from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "values": obj.get("values") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_filter_parent.py b/gooddata-api-client/gooddata_api_client/models/attribute_filter_parent.py deleted file mode 100644 index 5ffc3c63b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_filter_parent.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.over import Over -from typing import Optional, Set -from typing_extensions import Self - -class AttributeFilterParent(BaseModel): - """ - AttributeFilterParent - """ # noqa: E501 - filter_local_identifier: StrictStr = Field(alias="filterLocalIdentifier") - over: Over - __properties: ClassVar[List[str]] = ["filterLocalIdentifier", "over"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeFilterParent from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of over - if self.over: - _dict['over'] = self.over.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeFilterParent from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filterLocalIdentifier": obj.get("filterLocalIdentifier"), - "over": Over.from_dict(obj["over"]) if obj.get("over") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_format.py b/gooddata-api-client/gooddata_api_client/models/attribute_format.py deleted file mode 100644 index 60a076528..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_format.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class AttributeFormat(BaseModel): - """ - Attribute format describes formatting information to effectively format attribute values when needed. - """ # noqa: E501 - locale: StrictStr = Field(description="Format locale code like 'en-US', 'cs-CZ', etc.") - pattern: StrictStr = Field(description="ICU formatting pattern like 'y', 'dd.MM.y', etc.") - timezone: Optional[StrictStr] = Field(default=None, description="Timezone for date formatting like 'America/New_York', 'Europe/Prague', etc.") - __properties: ClassVar[List[str]] = ["locale", "pattern", "timezone"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeFormat from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeFormat from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "locale": obj.get("locale"), - "pattern": obj.get("pattern"), - "timezone": obj.get("timezone") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_header.py b/gooddata-api-client/gooddata_api_client/models/attribute_header.py deleted file mode 100644 index 6597f50b1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_header.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.attribute_header_attribute_header import AttributeHeaderAttributeHeader -from typing import Optional, Set -from typing_extensions import Self - -class AttributeHeader(BaseModel): - """ - AttributeHeader - """ # noqa: E501 - attribute_header: AttributeHeaderAttributeHeader = Field(alias="attributeHeader") - __properties: ClassVar[List[str]] = ["attributeHeader"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute_header - if self.attribute_header: - _dict['attributeHeader'] = self.attribute_header.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeHeader": AttributeHeaderAttributeHeader.from_dict(obj["attributeHeader"]) if obj.get("attributeHeader") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_header_attribute_header.py b/gooddata-api-client/gooddata_api_client/models/attribute_header_attribute_header.py deleted file mode 100644 index afb959624..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_header_attribute_header.py +++ /dev/null @@ -1,154 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.attribute_format import AttributeFormat -from gooddata_api_client.models.geo_area_config import GeoAreaConfig -from gooddata_api_client.models.rest_api_identifier import RestApiIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class AttributeHeaderAttributeHeader(BaseModel): - """ - AttributeHeaderAttributeHeader - """ # noqa: E501 - attribute: RestApiIdentifier - attribute_name: StrictStr = Field(description="Attribute name.", alias="attributeName") - format: Optional[AttributeFormat] = None - geo_area_config: Optional[GeoAreaConfig] = Field(default=None, alias="geoAreaConfig") - granularity: Optional[StrictStr] = Field(default=None, description="Date granularity of the attribute, only filled for date attributes.") - label: RestApiIdentifier - label_name: StrictStr = Field(description="Label name.", alias="labelName") - local_identifier: Annotated[str, Field(strict=True)] = Field(description="Local identifier of the attribute this header relates to.", alias="localIdentifier") - primary_label: RestApiIdentifier = Field(alias="primaryLabel") - value_type: Optional[StrictStr] = Field(default=None, description="Attribute value type.", alias="valueType") - __properties: ClassVar[List[str]] = ["attribute", "attributeName", "format", "geoAreaConfig", "granularity", "label", "labelName", "localIdentifier", "primaryLabel", "valueType"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - @field_validator('local_identifier') - def local_identifier_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[.a-zA-Z0-9_-]+$", value): - raise ValueError(r"must validate the regular expression /^[.a-zA-Z0-9_-]+$/") - return value - - @field_validator('value_type') - def value_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeHeaderAttributeHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute - if self.attribute: - _dict['attribute'] = self.attribute.to_dict() - # override the default output from pydantic by calling `to_dict()` of format - if self.format: - _dict['format'] = self.format.to_dict() - # override the default output from pydantic by calling `to_dict()` of geo_area_config - if self.geo_area_config: - _dict['geoAreaConfig'] = self.geo_area_config.to_dict() - # override the default output from pydantic by calling `to_dict()` of label - if self.label: - _dict['label'] = self.label.to_dict() - # override the default output from pydantic by calling `to_dict()` of primary_label - if self.primary_label: - _dict['primaryLabel'] = self.primary_label.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeHeaderAttributeHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": RestApiIdentifier.from_dict(obj["attribute"]) if obj.get("attribute") is not None else None, - "attributeName": obj.get("attributeName"), - "format": AttributeFormat.from_dict(obj["format"]) if obj.get("format") is not None else None, - "geoAreaConfig": GeoAreaConfig.from_dict(obj["geoAreaConfig"]) if obj.get("geoAreaConfig") is not None else None, - "granularity": obj.get("granularity"), - "label": RestApiIdentifier.from_dict(obj["label"]) if obj.get("label") is not None else None, - "labelName": obj.get("labelName"), - "localIdentifier": obj.get("localIdentifier"), - "primaryLabel": RestApiIdentifier.from_dict(obj["primaryLabel"]) if obj.get("primaryLabel") is not None else None, - "valueType": obj.get("valueType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_item.py b/gooddata-api-client/gooddata_api_client/models/attribute_item.py deleted file mode 100644 index 5c19557be..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_item.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.afm_object_identifier_label import AfmObjectIdentifierLabel -from typing import Optional, Set -from typing_extensions import Self - -class AttributeItem(BaseModel): - """ - AttributeItem - """ # noqa: E501 - label: AfmObjectIdentifierLabel - local_identifier: Annotated[str, Field(strict=True)] = Field(description="Local identifier of the attribute. This can be used to reference the attribute in other parts of the execution definition.", alias="localIdentifier") - show_all_values: Optional[StrictBool] = Field(default=False, description="Indicates whether to show all values of given attribute even if the data bound to those values is not available.", alias="showAllValues") - __properties: ClassVar[List[str]] = ["label", "localIdentifier", "showAllValues"] - - @field_validator('local_identifier') - def local_identifier_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[.a-zA-Z0-9_-]+$", value): - raise ValueError(r"must validate the regular expression /^[.a-zA-Z0-9_-]+$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of label - if self.label: - _dict['label'] = self.label.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "label": AfmObjectIdentifierLabel.from_dict(obj["label"]) if obj.get("label") is not None else None, - "localIdentifier": obj.get("localIdentifier"), - "showAllValues": obj.get("showAllValues") if obj.get("showAllValues") is not None else False - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_negative_filter.py b/gooddata-api-client/gooddata_api_client/models/attribute_negative_filter.py deleted file mode 100644 index 38f8b4dcf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_negative_filter.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AttributeNegativeFilter(BaseModel): - """ - AttributeNegativeFilter - """ # noqa: E501 - exclude: List[StrictStr] - using: StrictStr - __properties: ClassVar[List[str]] = ["exclude", "using"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeNegativeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeNegativeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "exclude": obj.get("exclude"), - "using": obj.get("using") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_positive_filter.py b/gooddata-api-client/gooddata_api_client/models/attribute_positive_filter.py deleted file mode 100644 index 3712ac7fd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_positive_filter.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AttributePositiveFilter(BaseModel): - """ - AttributePositiveFilter - """ # noqa: E501 - include: List[StrictStr] - using: StrictStr - __properties: ClassVar[List[str]] = ["include", "using"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributePositiveFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributePositiveFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "include": obj.get("include"), - "using": obj.get("using") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/attribute_result_header.py b/gooddata-api-client/gooddata_api_client/models/attribute_result_header.py deleted file mode 100644 index f7690a90d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/attribute_result_header.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AttributeResultHeader(BaseModel): - """ - Header containing the information related to attributes. - """ # noqa: E501 - label_value: StrictStr = Field(description="A value of the current attribute label.", alias="labelValue") - primary_label_value: StrictStr = Field(description="A value of the primary attribute label.", alias="primaryLabelValue") - __properties: ClassVar[List[str]] = ["labelValue", "primaryLabelValue"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AttributeResultHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AttributeResultHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "labelValue": obj.get("labelValue"), - "primaryLabelValue": obj.get("primaryLabelValue") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_alert.py b/gooddata-api-client/gooddata_api_client/models/automation_alert.py deleted file mode 100644 index 7dbb619f4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_alert.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.alert_afm import AlertAfm -from gooddata_api_client.models.automation_alert_condition import AutomationAlertCondition -from typing import Optional, Set -from typing_extensions import Self - -class AutomationAlert(BaseModel): - """ - AutomationAlert - """ # noqa: E501 - condition: AutomationAlertCondition - execution: AlertAfm - interval: Optional[StrictStr] = Field(default=None, description="Date granularity for the interval of ONCE_PER_INTERVAL trigger. Supported granularities: DAY, WEEK, MONTH, QUARTER, YEAR.") - trigger: Optional[StrictStr] = Field(default='ALWAYS', description="Trigger behavior for the alert. ALWAYS - alert is triggered every time the condition is met. ONCE - alert is triggered only once when the condition is met. ONCE_PER_INTERVAL - alert is triggered when the condition is met, then suppressed for the interval. If no interval is specified, it behaves as ALWAYS. ") - __properties: ClassVar[List[str]] = ["condition", "execution", "interval", "trigger"] - - @field_validator('interval') - def interval_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('trigger') - def trigger_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'ONCE', 'ONCE_PER_INTERVAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'ONCE', 'ONCE_PER_INTERVAL')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationAlert from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of condition - if self.condition: - _dict['condition'] = self.condition.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution - if self.execution: - _dict['execution'] = self.execution.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationAlert from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "condition": AutomationAlertCondition.from_dict(obj["condition"]) if obj.get("condition") is not None else None, - "execution": AlertAfm.from_dict(obj["execution"]) if obj.get("execution") is not None else None, - "interval": obj.get("interval"), - "trigger": obj.get("trigger") if obj.get("trigger") is not None else 'ALWAYS' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_alert_condition.py b/gooddata-api-client/gooddata_api_client/models/automation_alert_condition.py deleted file mode 100644 index e79b1e0ac..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_alert_condition.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.anomaly_detection_wrapper import AnomalyDetectionWrapper -from gooddata_api_client.models.comparison_wrapper import ComparisonWrapper -from gooddata_api_client.models.range_wrapper import RangeWrapper -from gooddata_api_client.models.relative_wrapper import RelativeWrapper -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AUTOMATIONALERTCONDITION_ONE_OF_SCHEMAS = ["AnomalyDetectionWrapper", "ComparisonWrapper", "RangeWrapper", "RelativeWrapper"] - -class AutomationAlertCondition(BaseModel): - """ - AutomationAlertCondition - """ - # data type: AnomalyDetectionWrapper - oneof_schema_1_validator: Optional[AnomalyDetectionWrapper] = None - # data type: ComparisonWrapper - oneof_schema_2_validator: Optional[ComparisonWrapper] = None - # data type: RangeWrapper - oneof_schema_3_validator: Optional[RangeWrapper] = None - # data type: RelativeWrapper - oneof_schema_4_validator: Optional[RelativeWrapper] = None - actual_instance: Optional[Union[AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper]] = None - one_of_schemas: Set[str] = { "AnomalyDetectionWrapper", "ComparisonWrapper", "RangeWrapper", "RelativeWrapper" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AutomationAlertCondition.model_construct() - error_messages = [] - match = 0 - # validate data type: AnomalyDetectionWrapper - if not isinstance(v, AnomalyDetectionWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `AnomalyDetectionWrapper`") - else: - match += 1 - # validate data type: ComparisonWrapper - if not isinstance(v, ComparisonWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `ComparisonWrapper`") - else: - match += 1 - # validate data type: RangeWrapper - if not isinstance(v, RangeWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `RangeWrapper`") - else: - match += 1 - # validate data type: RelativeWrapper - if not isinstance(v, RelativeWrapper): - error_messages.append(f"Error! Input type `{type(v)}` is not `RelativeWrapper`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AutomationAlertCondition with oneOf schemas: AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AnomalyDetectionWrapper - try: - if match == 0: - instance.actual_instance = AnomalyDetectionWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into ComparisonWrapper - try: - if match == 0: - instance.actual_instance = ComparisonWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RangeWrapper - try: - if match == 0: - instance.actual_instance = RangeWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RelativeWrapper - try: - if match == 0: - instance.actual_instance = RelativeWrapper.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AutomationAlertCondition with oneOf schemas: AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AnomalyDetectionWrapper, ComparisonWrapper, RangeWrapper, RelativeWrapper]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_dashboard_tabular_export.py b/gooddata-api-client/gooddata_api_client/models/automation_dashboard_tabular_export.py deleted file mode 100644 index 3de74641c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_dashboard_tabular_export.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dashboard_tabular_export_request_v2 import DashboardTabularExportRequestV2 -from typing import Optional, Set -from typing_extensions import Self - -class AutomationDashboardTabularExport(BaseModel): - """ - AutomationDashboardTabularExport - """ # noqa: E501 - request_payload: DashboardTabularExportRequestV2 = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationDashboardTabularExport from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationDashboardTabularExport from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": DashboardTabularExportRequestV2.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_external_recipient.py b/gooddata-api-client/gooddata_api_client/models/automation_external_recipient.py deleted file mode 100644 index d7122ab1b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_external_recipient.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class AutomationExternalRecipient(BaseModel): - """ - AutomationExternalRecipient - """ # noqa: E501 - email: StrictStr = Field(description="E-mail address to send notifications from.") - __properties: ClassVar[List[str]] = ["email"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationExternalRecipient from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationExternalRecipient from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_image_export.py b/gooddata-api-client/gooddata_api_client/models/automation_image_export.py deleted file mode 100644 index b908ef88f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_image_export.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.image_export_request import ImageExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class AutomationImageExport(BaseModel): - """ - AutomationImageExport - """ # noqa: E501 - request_payload: ImageExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationImageExport from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationImageExport from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": ImageExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_metadata.py b/gooddata-api-client/gooddata_api_client/models/automation_metadata.py deleted file mode 100644 index 1a9126482..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_metadata.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.visible_filter import VisibleFilter -from typing import Optional, Set -from typing_extensions import Self - -class AutomationMetadata(BaseModel): - """ - Additional information for the automation. - """ # noqa: E501 - visible_filters: Optional[List[VisibleFilter]] = Field(default=None, alias="visibleFilters") - widget: Optional[StrictStr] = None - additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["visibleFilters", "widget"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationMetadata from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * Fields in `self.additional_properties` are added to the output dict. - """ - excluded_fields: Set[str] = set([ - "additional_properties", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in visible_filters (list) - _items = [] - if self.visible_filters: - for _item_visible_filters in self.visible_filters: - if _item_visible_filters: - _items.append(_item_visible_filters.to_dict()) - _dict['visibleFilters'] = _items - # puts key-value pairs in additional_properties in the top level - if self.additional_properties is not None: - for _key, _value in self.additional_properties.items(): - _dict[_key] = _value - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationMetadata from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "visibleFilters": [VisibleFilter.from_dict(_item) for _item in obj["visibleFilters"]] if obj.get("visibleFilters") is not None else None, - "widget": obj.get("widget") - }) - # store additional fields in additional_properties - for _key in obj.keys(): - if _key not in cls.__properties: - _obj.additional_properties[_key] = obj.get(_key) - - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_notification.py b/gooddata-api-client/gooddata_api_client/models/automation_notification.py deleted file mode 100644 index 4e08d6f47..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_notification.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.notification_content import NotificationContent -from gooddata_api_client.models.webhook_message import WebhookMessage -from typing import Optional, Set -from typing_extensions import Self - -class AutomationNotification(NotificationContent): - """ - AutomationNotification - """ # noqa: E501 - content: WebhookMessage - __properties: ClassVar[List[str]] = ["type", "content"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationNotification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content - if self.content: - _dict['content'] = self.content.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationNotification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "type": obj.get("type"), - "content": WebhookMessage.from_dict(obj["content"]) if obj.get("content") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_raw_export.py b/gooddata-api-client/gooddata_api_client/models/automation_raw_export.py deleted file mode 100644 index b3aa533de..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_raw_export.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.raw_export_automation_request import RawExportAutomationRequest -from typing import Optional, Set -from typing_extensions import Self - -class AutomationRawExport(BaseModel): - """ - AutomationRawExport - """ # noqa: E501 - request_payload: RawExportAutomationRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationRawExport from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationRawExport from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": RawExportAutomationRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_schedule.py b/gooddata-api-client/gooddata_api_client/models/automation_schedule.py deleted file mode 100644 index 756f4a73a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_schedule.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AutomationSchedule(BaseModel): - """ - AutomationSchedule - """ # noqa: E501 - cron: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays.") - cron_description: Optional[StrictStr] = Field(default=None, description="Human-readable description of the cron expression.", alias="cronDescription") - first_run: Optional[datetime] = Field(default=None, description="Timestamp of the first scheduled action. If not provided default to the next scheduled time.", alias="firstRun") - timezone: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Timezone in which the schedule is defined.") - __properties: ClassVar[List[str]] = ["cron", "cronDescription", "firstRun", "timezone"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationSchedule from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "cron_description", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationSchedule from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "cron": obj.get("cron"), - "cronDescription": obj.get("cronDescription"), - "firstRun": obj.get("firstRun"), - "timezone": obj.get("timezone") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_slides_export.py b/gooddata-api-client/gooddata_api_client/models/automation_slides_export.py deleted file mode 100644 index a53d65e04..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_slides_export.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.slides_export_request import SlidesExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class AutomationSlidesExport(BaseModel): - """ - AutomationSlidesExport - """ # noqa: E501 - request_payload: SlidesExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationSlidesExport from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationSlidesExport from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": SlidesExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_tabular_export.py b/gooddata-api-client/gooddata_api_client/models/automation_tabular_export.py deleted file mode 100644 index 2bb6d699c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_tabular_export.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.tabular_export_request import TabularExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class AutomationTabularExport(BaseModel): - """ - AutomationTabularExport - """ # noqa: E501 - request_payload: TabularExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationTabularExport from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationTabularExport from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": TabularExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/automation_visual_export.py b/gooddata-api-client/gooddata_api_client/models/automation_visual_export.py deleted file mode 100644 index 5cb93b0b5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/automation_visual_export.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.visual_export_request import VisualExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class AutomationVisualExport(BaseModel): - """ - AutomationVisualExport - """ # noqa: E501 - request_payload: VisualExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AutomationVisualExport from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AutomationVisualExport from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": VisualExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/available_assignees.py b/gooddata-api-client/gooddata_api_client/models/available_assignees.py deleted file mode 100644 index f9b072477..000000000 --- a/gooddata-api-client/gooddata_api_client/models/available_assignees.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.user_assignee import UserAssignee -from gooddata_api_client.models.user_group_assignee import UserGroupAssignee -from typing import Optional, Set -from typing_extensions import Self - -class AvailableAssignees(BaseModel): - """ - AvailableAssignees - """ # noqa: E501 - user_groups: List[UserGroupAssignee] = Field(description="List of user groups", alias="userGroups") - users: List[UserAssignee] = Field(description="List of users") - __properties: ClassVar[List[str]] = ["userGroups", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AvailableAssignees from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AvailableAssignees from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "userGroups": [UserGroupAssignee.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None, - "users": [UserAssignee.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aws_bedrock_access_key_auth.py b/gooddata-api-client/gooddata_api_client/models/aws_bedrock_access_key_auth.py deleted file mode 100644 index f58d8de8a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aws_bedrock_access_key_auth.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AwsBedrockAccessKeyAuth(BaseModel): - """ - AwsBedrockAccessKeyAuth - """ # noqa: E501 - access_key_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="AWS Access Key ID.", alias="accessKeyId") - secret_access_key: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="AWS Secret Access Key.", alias="secretAccessKey") - session_token: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="AWS Session Token (for temporary credentials).", alias="sessionToken") - type: StrictStr = Field(description="Authentication type.") - __properties: ClassVar[List[str]] = ["accessKeyId", "secretAccessKey", "sessionToken", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ACCESS_KEY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ACCESS_KEY')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AwsBedrockAccessKeyAuth from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if access_key_id (nullable) is None - # and model_fields_set contains the field - if self.access_key_id is None and "access_key_id" in self.model_fields_set: - _dict['accessKeyId'] = None - - # set to None if secret_access_key (nullable) is None - # and model_fields_set contains the field - if self.secret_access_key is None and "secret_access_key" in self.model_fields_set: - _dict['secretAccessKey'] = None - - # set to None if session_token (nullable) is None - # and model_fields_set contains the field - if self.session_token is None and "session_token" in self.model_fields_set: - _dict['sessionToken'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AwsBedrockAccessKeyAuth from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "accessKeyId": obj.get("accessKeyId"), - "secretAccessKey": obj.get("secretAccessKey"), - "sessionToken": obj.get("sessionToken"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/aws_bedrock_provider_config.py b/gooddata-api-client/gooddata_api_client/models/aws_bedrock_provider_config.py deleted file mode 100644 index 8f811ad7f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/aws_bedrock_provider_config.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.bedrock_provider_auth import BedrockProviderAuth -from typing import Optional, Set -from typing_extensions import Self - -class AwsBedrockProviderConfig(BaseModel): - """ - Configuration for AWS Bedrock provider. - """ # noqa: E501 - auth: BedrockProviderAuth - region: Annotated[str, Field(strict=True, max_length=255)] = Field(description="AWS region for Bedrock.") - type: StrictStr = Field(description="Provider type.") - __properties: ClassVar[List[str]] = ["auth", "region", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['AWS_BEDROCK']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('AWS_BEDROCK')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AwsBedrockProviderConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of auth - if self.auth: - _dict['auth'] = self.auth.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AwsBedrockProviderConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "auth": BedrockProviderAuth.from_dict(obj["auth"]) if obj.get("auth") is not None else None, - "region": obj.get("region"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/azure_foundry_api_key_auth.py b/gooddata-api-client/gooddata_api_client/models/azure_foundry_api_key_auth.py deleted file mode 100644 index bcc416bb4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/azure_foundry_api_key_auth.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class AzureFoundryApiKeyAuth(BaseModel): - """ - AzureFoundryApiKeyAuth - """ # noqa: E501 - api_key: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Azure API key.", alias="apiKey") - type: StrictStr = Field(description="Authentication type.") - __properties: ClassVar[List[str]] = ["apiKey", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['API_KEY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('API_KEY')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AzureFoundryApiKeyAuth from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if api_key (nullable) is None - # and model_fields_set contains the field - if self.api_key is None and "api_key" in self.model_fields_set: - _dict['apiKey'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AzureFoundryApiKeyAuth from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "apiKey": obj.get("apiKey"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_auth.py b/gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_auth.py deleted file mode 100644 index 1205a15fe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_auth.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.azure_foundry_api_key_auth import AzureFoundryApiKeyAuth -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -AZUREFOUNDRYPROVIDERAUTH_ONE_OF_SCHEMAS = ["AzureFoundryApiKeyAuth"] - -class AzureFoundryProviderAuth(BaseModel): - """ - Authentication configuration. - """ - # data type: AzureFoundryApiKeyAuth - oneof_schema_1_validator: Optional[AzureFoundryApiKeyAuth] = None - actual_instance: Optional[Union[AzureFoundryApiKeyAuth]] = None - one_of_schemas: Set[str] = { "AzureFoundryApiKeyAuth" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = AzureFoundryProviderAuth.model_construct() - error_messages = [] - match = 0 - # validate data type: AzureFoundryApiKeyAuth - if not isinstance(v, AzureFoundryApiKeyAuth): - error_messages.append(f"Error! Input type `{type(v)}` is not `AzureFoundryApiKeyAuth`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in AzureFoundryProviderAuth with oneOf schemas: AzureFoundryApiKeyAuth. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AzureFoundryApiKeyAuth - try: - if match == 0: - instance.actual_instance = AzureFoundryApiKeyAuth.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into AzureFoundryProviderAuth with oneOf schemas: AzureFoundryApiKeyAuth. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AzureFoundryApiKeyAuth]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_config.py b/gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_config.py deleted file mode 100644 index b67871882..000000000 --- a/gooddata-api-client/gooddata_api_client/models/azure_foundry_provider_config.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.azure_foundry_provider_auth import AzureFoundryProviderAuth -from typing import Optional, Set -from typing_extensions import Self - -class AzureFoundryProviderConfig(BaseModel): - """ - Configuration for Azure Foundry provider. - """ # noqa: E501 - auth: AzureFoundryProviderAuth - endpoint: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Azure AI inference endpoint URL.") - type: StrictStr = Field(description="Provider type.") - __properties: ClassVar[List[str]] = ["auth", "endpoint", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['AZURE_FOUNDRY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('AZURE_FOUNDRY')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AzureFoundryProviderConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of auth - if self.auth: - _dict['auth'] = self.auth.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AzureFoundryProviderConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "auth": AzureFoundryProviderAuth.from_dict(obj["auth"]) if obj.get("auth") is not None else None, - "endpoint": obj.get("endpoint"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/bedrock_provider_auth.py b/gooddata-api-client/gooddata_api_client/models/bedrock_provider_auth.py deleted file mode 100644 index 43b869c51..000000000 --- a/gooddata-api-client/gooddata_api_client/models/bedrock_provider_auth.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.aws_bedrock_access_key_auth import AwsBedrockAccessKeyAuth -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -BEDROCKPROVIDERAUTH_ONE_OF_SCHEMAS = ["AwsBedrockAccessKeyAuth"] - -class BedrockProviderAuth(BaseModel): - """ - Authentication configuration. - """ - # data type: AwsBedrockAccessKeyAuth - oneof_schema_1_validator: Optional[AwsBedrockAccessKeyAuth] = None - actual_instance: Optional[Union[AwsBedrockAccessKeyAuth]] = None - one_of_schemas: Set[str] = { "AwsBedrockAccessKeyAuth" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = BedrockProviderAuth.model_construct() - error_messages = [] - match = 0 - # validate data type: AwsBedrockAccessKeyAuth - if not isinstance(v, AwsBedrockAccessKeyAuth): - error_messages.append(f"Error! Input type `{type(v)}` is not `AwsBedrockAccessKeyAuth`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in BedrockProviderAuth with oneOf schemas: AwsBedrockAccessKeyAuth. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AwsBedrockAccessKeyAuth - try: - if match == 0: - instance.actual_instance = AwsBedrockAccessKeyAuth.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into BedrockProviderAuth with oneOf schemas: AwsBedrockAccessKeyAuth. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AwsBedrockAccessKeyAuth]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/bounded_filter.py b/gooddata-api-client/gooddata_api_client/models/bounded_filter.py deleted file mode 100644 index a8062b69d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/bounded_filter.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class BoundedFilter(BaseModel): - """ - Bounding filter for this relative date filter. This can be used to limit the range of the relative date filter to a specific date range. - """ # noqa: E501 - var_from: Optional[StrictInt] = Field(default=None, description="Start of the filtering interval. Specified by number of periods (with respect to given granularity). Typically negative (historical time interval like -2 for '2 days/weeks, ... ago'). If null, then start of the range is unbounded.", alias="from") - granularity: StrictStr = Field(description="Date granularity specifying particular date attribute in given dimension.") - to: Optional[StrictInt] = Field(default=None, description="End of the filtering interval. Specified by number of periods (with respect to given granularity). Value 'O' is representing current time-interval (current day, week, ...). If null, then end of the range is unbounded.") - __properties: ClassVar[List[str]] = ["from", "granularity", "to"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of BoundedFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if var_from (nullable) is None - # and model_fields_set contains the field - if self.var_from is None and "var_from" in self.model_fields_set: - _dict['from'] = None - - # set to None if to (nullable) is None - # and model_fields_set contains the field - if self.to is None and "to" in self.model_fields_set: - _dict['to'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of BoundedFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "from": obj.get("from"), - "granularity": obj.get("granularity"), - "to": obj.get("to") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/change_analysis_params.py b/gooddata-api-client/gooddata_api_client/models/change_analysis_params.py deleted file mode 100644 index 102475afc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/change_analysis_params.py +++ /dev/null @@ -1,125 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.attribute_item import AttributeItem -from gooddata_api_client.models.change_analysis_params_filters_inner import ChangeAnalysisParamsFiltersInner -from gooddata_api_client.models.measure_item import MeasureItem -from typing import Optional, Set -from typing_extensions import Self - -class ChangeAnalysisParams(BaseModel): - """ - Change analysis specification. - """ # noqa: E501 - analyzed_period: StrictStr = Field(description="The analyzed time period", alias="analyzedPeriod") - attributes: List[AttributeItem] = Field(description="Attributes to analyze for significant changes") - date_attribute: AttributeItem = Field(alias="dateAttribute") - filters: List[ChangeAnalysisParamsFiltersInner] = Field(description="Optional filters to apply") - measure: MeasureItem - measure_title: StrictStr = Field(description="The title of the measure being analyzed", alias="measureTitle") - reference_period: StrictStr = Field(description="The reference time period", alias="referencePeriod") - use_smart_attribute_selection: StrictBool = Field(description="Whether to use smart attribute selection", alias="useSmartAttributeSelection") - __properties: ClassVar[List[str]] = ["analyzedPeriod", "attributes", "dateAttribute", "filters", "measure", "measureTitle", "referencePeriod", "useSmartAttributeSelection"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChangeAnalysisParams from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - # override the default output from pydantic by calling `to_dict()` of date_attribute - if self.date_attribute: - _dict['dateAttribute'] = self.date_attribute.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChangeAnalysisParams from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyzedPeriod": obj.get("analyzedPeriod"), - "attributes": [AttributeItem.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None, - "dateAttribute": AttributeItem.from_dict(obj["dateAttribute"]) if obj.get("dateAttribute") is not None else None, - "filters": [ChangeAnalysisParamsFiltersInner.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "measure": MeasureItem.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "measureTitle": obj.get("measureTitle"), - "referencePeriod": obj.get("referencePeriod"), - "useSmartAttributeSelection": obj.get("useSmartAttributeSelection") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/change_analysis_params_filters_inner.py b/gooddata-api-client/gooddata_api_client/models/change_analysis_params_filters_inner.py deleted file mode 100644 index c73b4ea9f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/change_analysis_params_filters_inner.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.abstract_measure_value_filter import AbstractMeasureValueFilter -from gooddata_api_client.models.filter_definition_for_simple_measure import FilterDefinitionForSimpleMeasure -from gooddata_api_client.models.inline_filter_definition import InlineFilterDefinition -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -CHANGEANALYSISPARAMSFILTERSINNER_ONE_OF_SCHEMAS = ["AbstractMeasureValueFilter", "FilterDefinitionForSimpleMeasure", "InlineFilterDefinition"] - -class ChangeAnalysisParamsFiltersInner(BaseModel): - """ - ChangeAnalysisParamsFiltersInner - """ - # data type: AbstractMeasureValueFilter - oneof_schema_1_validator: Optional[AbstractMeasureValueFilter] = None - # data type: FilterDefinitionForSimpleMeasure - oneof_schema_2_validator: Optional[FilterDefinitionForSimpleMeasure] = None - # data type: InlineFilterDefinition - oneof_schema_3_validator: Optional[InlineFilterDefinition] = None - actual_instance: Optional[Union[AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition]] = None - one_of_schemas: Set[str] = { "AbstractMeasureValueFilter", "FilterDefinitionForSimpleMeasure", "InlineFilterDefinition" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ChangeAnalysisParamsFiltersInner.model_construct() - error_messages = [] - match = 0 - # validate data type: AbstractMeasureValueFilter - if not isinstance(v, AbstractMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AbstractMeasureValueFilter`") - else: - match += 1 - # validate data type: FilterDefinitionForSimpleMeasure - if not isinstance(v, FilterDefinitionForSimpleMeasure): - error_messages.append(f"Error! Input type `{type(v)}` is not `FilterDefinitionForSimpleMeasure`") - else: - match += 1 - # validate data type: InlineFilterDefinition - if not isinstance(v, InlineFilterDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `InlineFilterDefinition`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ChangeAnalysisParamsFiltersInner with oneOf schemas: AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AbstractMeasureValueFilter - try: - if match == 0: - instance.actual_instance = AbstractMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into FilterDefinitionForSimpleMeasure - try: - if match == 0: - instance.actual_instance = FilterDefinitionForSimpleMeasure.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into InlineFilterDefinition - try: - if match == 0: - instance.actual_instance = InlineFilterDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ChangeAnalysisParamsFiltersInner with oneOf schemas: AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AbstractMeasureValueFilter, FilterDefinitionForSimpleMeasure, InlineFilterDefinition]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/change_analysis_request.py b/gooddata-api-client/gooddata_api_client/models/change_analysis_request.py deleted file mode 100644 index 1e501c519..000000000 --- a/gooddata-api-client/gooddata_api_client/models/change_analysis_request.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.attribute_item import AttributeItem -from gooddata_api_client.models.change_analysis_params_filters_inner import ChangeAnalysisParamsFiltersInner -from gooddata_api_client.models.measure_item import MeasureItem -from typing import Optional, Set -from typing_extensions import Self - -class ChangeAnalysisRequest(BaseModel): - """ - Request for change analysis computation - """ # noqa: E501 - analyzed_period: StrictStr = Field(description="The analyzed time period (e.g., '2025-02')", alias="analyzedPeriod") - attributes: Optional[List[AttributeItem]] = Field(default=None, description="Attributes to analyze for significant changes. If empty, valid attributes will be automatically discovered.") - aux_measures: Optional[List[MeasureItem]] = Field(default=None, description="Auxiliary measures", alias="auxMeasures") - date_attribute: AttributeItem = Field(alias="dateAttribute") - exclude_tags: Optional[List[StrictStr]] = Field(default=None, description="Exclude attributes with any of these tags. This filter applies to both auto-discovered and explicitly provided attributes.", alias="excludeTags") - filters: Optional[List[ChangeAnalysisParamsFiltersInner]] = Field(default=None, description="Optional filters to apply.") - include_tags: Optional[List[StrictStr]] = Field(default=None, description="Only include attributes with at least one of these tags. If empty, no inclusion filter is applied. This filter applies to both auto-discovered and explicitly provided attributes.", alias="includeTags") - measure: MeasureItem - reference_period: StrictStr = Field(description="The reference time period (e.g., '2025-01')", alias="referencePeriod") - use_smart_attribute_selection: Optional[StrictBool] = Field(default=False, description="Whether to use smart attribute selection (LLM-based) instead of discovering all valid attributes. If true, GenAI will intelligently select the most relevant attributes for change analysis. If false or not set, all valid attributes will be discovered using Calcique. Smart attribute selection applies only when no attributes are provided.", alias="useSmartAttributeSelection") - __properties: ClassVar[List[str]] = ["analyzedPeriod", "attributes", "auxMeasures", "dateAttribute", "excludeTags", "filters", "includeTags", "measure", "referencePeriod", "useSmartAttributeSelection"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChangeAnalysisRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in aux_measures (list) - _items = [] - if self.aux_measures: - for _item_aux_measures in self.aux_measures: - if _item_aux_measures: - _items.append(_item_aux_measures.to_dict()) - _dict['auxMeasures'] = _items - # override the default output from pydantic by calling `to_dict()` of date_attribute - if self.date_attribute: - _dict['dateAttribute'] = self.date_attribute.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChangeAnalysisRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyzedPeriod": obj.get("analyzedPeriod"), - "attributes": [AttributeItem.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None, - "auxMeasures": [MeasureItem.from_dict(_item) for _item in obj["auxMeasures"]] if obj.get("auxMeasures") is not None else None, - "dateAttribute": AttributeItem.from_dict(obj["dateAttribute"]) if obj.get("dateAttribute") is not None else None, - "excludeTags": obj.get("excludeTags"), - "filters": [ChangeAnalysisParamsFiltersInner.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "includeTags": obj.get("includeTags"), - "measure": MeasureItem.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "referencePeriod": obj.get("referencePeriod"), - "useSmartAttributeSelection": obj.get("useSmartAttributeSelection") if obj.get("useSmartAttributeSelection") is not None else False - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/change_analysis_response.py b/gooddata-api-client/gooddata_api_client/models/change_analysis_response.py deleted file mode 100644 index 6e7276af6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/change_analysis_response.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_links import ExecutionLinks -from typing import Optional, Set -from typing_extensions import Self - -class ChangeAnalysisResponse(BaseModel): - """ - Response for change analysis computation - """ # noqa: E501 - links: ExecutionLinks - __properties: ClassVar[List[str]] = ["links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChangeAnalysisResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChangeAnalysisResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "links": ExecutionLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/change_analysis_result.py b/gooddata-api-client/gooddata_api_client/models/change_analysis_result.py deleted file mode 100644 index ec805de97..000000000 --- a/gooddata-api-client/gooddata_api_client/models/change_analysis_result.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.metric_value_change import MetricValueChange -from typing import Optional, Set -from typing_extensions import Self - -class ChangeAnalysisResult(BaseModel): - """ - Result of a change analysis execution. - """ # noqa: E501 - data: List[MetricValueChange] = Field(description="The change analysis result data containing significant changes.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChangeAnalysisResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChangeAnalysisResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [MetricValueChange.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/chat_history_interaction.py b/gooddata-api-client/gooddata_api_client/models/chat_history_interaction.py deleted file mode 100644 index ea99ebb8e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/chat_history_interaction.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.change_analysis_params import ChangeAnalysisParams -from gooddata_api_client.models.created_visualizations import CreatedVisualizations -from gooddata_api_client.models.found_objects import FoundObjects -from gooddata_api_client.models.reasoning import Reasoning -from gooddata_api_client.models.route_result import RouteResult -from gooddata_api_client.models.search_result import SearchResult -from typing import Optional, Set -from typing_extensions import Self - -class ChatHistoryInteraction(BaseModel): - """ - List of chat history interactions. - """ # noqa: E501 - change_analysis_params: Optional[ChangeAnalysisParams] = Field(default=None, alias="changeAnalysisParams") - chat_history_interaction_id: StrictStr = Field(description="Chat History interaction ID. Unique ID for each interaction.", alias="chatHistoryInteractionId") - created_visualizations: Optional[CreatedVisualizations] = Field(default=None, alias="createdVisualizations") - error_response: Optional[StrictStr] = Field(default=None, description="Error response in anything fails.", alias="errorResponse") - found_objects: Optional[FoundObjects] = Field(default=None, alias="foundObjects") - interaction_finished: StrictBool = Field(description="Has the interaction already finished? Can be used for polling when interaction is in progress.", alias="interactionFinished") - question: Annotated[str, Field(strict=True, max_length=2000)] = Field(description="User question") - reasoning: Optional[Reasoning] = None - routing: RouteResult - semantic_search: Optional[SearchResult] = Field(default=None, alias="semanticSearch") - text_response: Optional[StrictStr] = Field(default=None, description="Text response for general questions.", alias="textResponse") - thread_id_suffix: Optional[StrictStr] = Field(default=None, description="Chat History thread suffix appended to ID generated by backend. Enables more chat windows.", alias="threadIdSuffix") - user_feedback: Optional[StrictStr] = Field(default=None, description="User feedback.", alias="userFeedback") - __properties: ClassVar[List[str]] = ["changeAnalysisParams", "chatHistoryInteractionId", "createdVisualizations", "errorResponse", "foundObjects", "interactionFinished", "question", "reasoning", "routing", "semanticSearch", "textResponse", "threadIdSuffix", "userFeedback"] - - @field_validator('user_feedback') - def user_feedback_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['POSITIVE', 'NEGATIVE', 'NONE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSITIVE', 'NEGATIVE', 'NONE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChatHistoryInteraction from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of change_analysis_params - if self.change_analysis_params: - _dict['changeAnalysisParams'] = self.change_analysis_params.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_visualizations - if self.created_visualizations: - _dict['createdVisualizations'] = self.created_visualizations.to_dict() - # override the default output from pydantic by calling `to_dict()` of found_objects - if self.found_objects: - _dict['foundObjects'] = self.found_objects.to_dict() - # override the default output from pydantic by calling `to_dict()` of reasoning - if self.reasoning: - _dict['reasoning'] = self.reasoning.to_dict() - # override the default output from pydantic by calling `to_dict()` of routing - if self.routing: - _dict['routing'] = self.routing.to_dict() - # override the default output from pydantic by calling `to_dict()` of semantic_search - if self.semantic_search: - _dict['semanticSearch'] = self.semantic_search.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChatHistoryInteraction from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "changeAnalysisParams": ChangeAnalysisParams.from_dict(obj["changeAnalysisParams"]) if obj.get("changeAnalysisParams") is not None else None, - "chatHistoryInteractionId": obj.get("chatHistoryInteractionId"), - "createdVisualizations": CreatedVisualizations.from_dict(obj["createdVisualizations"]) if obj.get("createdVisualizations") is not None else None, - "errorResponse": obj.get("errorResponse"), - "foundObjects": FoundObjects.from_dict(obj["foundObjects"]) if obj.get("foundObjects") is not None else None, - "interactionFinished": obj.get("interactionFinished"), - "question": obj.get("question"), - "reasoning": Reasoning.from_dict(obj["reasoning"]) if obj.get("reasoning") is not None else None, - "routing": RouteResult.from_dict(obj["routing"]) if obj.get("routing") is not None else None, - "semanticSearch": SearchResult.from_dict(obj["semanticSearch"]) if obj.get("semanticSearch") is not None else None, - "textResponse": obj.get("textResponse"), - "threadIdSuffix": obj.get("threadIdSuffix"), - "userFeedback": obj.get("userFeedback") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/chat_history_request.py b/gooddata-api-client/gooddata_api_client/models/chat_history_request.py deleted file mode 100644 index fcee4e00e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/chat_history_request.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.saved_visualization import SavedVisualization -from typing import Optional, Set -from typing_extensions import Self - -class ChatHistoryRequest(BaseModel): - """ - ChatHistoryRequest - """ # noqa: E501 - chat_history_interaction_id: Optional[StrictStr] = Field(default=None, description="Return chat history records only after this interaction ID. If empty, complete chat history is returned.", alias="chatHistoryInteractionId") - reset: Optional[StrictBool] = Field(default=None, description="User feedback.") - response_state: Optional[StrictStr] = Field(default=None, description="Response state indicating the outcome of the AI interaction.", alias="responseState") - saved_visualization: Optional[SavedVisualization] = Field(default=None, alias="savedVisualization") - thread_id_suffix: Optional[StrictStr] = Field(default=None, description="Chat History thread suffix appended to ID generated by backend. Enables more chat windows.", alias="threadIdSuffix") - user_feedback: Optional[StrictStr] = Field(default=None, description="User feedback.", alias="userFeedback") - user_text_feedback: Optional[StrictStr] = Field(default=None, description="User text feedback for the interaction.", alias="userTextFeedback") - __properties: ClassVar[List[str]] = ["chatHistoryInteractionId", "reset", "responseState", "savedVisualization", "threadIdSuffix", "userFeedback", "userTextFeedback"] - - @field_validator('response_state') - def response_state_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SUCCESSFUL', 'UNEXPECTED_ERROR', 'NOT_FOUND_ATTRIBUTES', 'TOO_MANY_DATA_POINTS', 'NO_DATA', 'NO_RESULTS', 'OUT_OF_TOPIC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUCCESSFUL', 'UNEXPECTED_ERROR', 'NOT_FOUND_ATTRIBUTES', 'TOO_MANY_DATA_POINTS', 'NO_DATA', 'NO_RESULTS', 'OUT_OF_TOPIC')") - return value - - @field_validator('user_feedback') - def user_feedback_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['POSITIVE', 'NEGATIVE', 'NONE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSITIVE', 'NEGATIVE', 'NONE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChatHistoryRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of saved_visualization - if self.saved_visualization: - _dict['savedVisualization'] = self.saved_visualization.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChatHistoryRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "chatHistoryInteractionId": obj.get("chatHistoryInteractionId"), - "reset": obj.get("reset"), - "responseState": obj.get("responseState"), - "savedVisualization": SavedVisualization.from_dict(obj["savedVisualization"]) if obj.get("savedVisualization") is not None else None, - "threadIdSuffix": obj.get("threadIdSuffix"), - "userFeedback": obj.get("userFeedback"), - "userTextFeedback": obj.get("userTextFeedback") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/chat_history_result.py b/gooddata-api-client/gooddata_api_client/models/chat_history_result.py deleted file mode 100644 index 94c62158d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/chat_history_result.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.chat_history_interaction import ChatHistoryInteraction -from typing import Optional, Set -from typing_extensions import Self - -class ChatHistoryResult(BaseModel): - """ - ChatHistoryResult - """ # noqa: E501 - interactions: List[ChatHistoryInteraction] = Field(description="List of chat history interactions.") - thread_id: StrictStr = Field(description="The conversation thread ID.", alias="threadId") - __properties: ClassVar[List[str]] = ["interactions", "threadId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChatHistoryResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in interactions (list) - _items = [] - if self.interactions: - for _item_interactions in self.interactions: - if _item_interactions: - _items.append(_item_interactions.to_dict()) - _dict['interactions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChatHistoryResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "interactions": [ChatHistoryInteraction.from_dict(_item) for _item in obj["interactions"]] if obj.get("interactions") is not None else None, - "threadId": obj.get("threadId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/chat_request.py b/gooddata-api-client/gooddata_api_client/models/chat_request.py deleted file mode 100644 index 2dde53a33..000000000 --- a/gooddata-api-client/gooddata_api_client/models/chat_request.py +++ /dev/null @@ -1,134 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing_extensions import Annotated -from gooddata_api_client.models.allowed_relationship_type import AllowedRelationshipType -from gooddata_api_client.models.user_context import UserContext -from typing import Optional, Set -from typing_extensions import Self - -class ChatRequest(BaseModel): - """ - ChatRequest - """ # noqa: E501 - allowed_relationship_types: Optional[List[AllowedRelationshipType]] = Field(default=None, description="Filter relationships and search results based on allowed relationship type combinations. When specified, only relationships matching the allowed types are returned (e.g. for view-only users).", alias="allowedRelationshipTypes") - include_hidden: Optional[StrictBool] = Field(default=False, description="If true, includes hidden objects in search and visualization building. If false (default), excludes objects where isHidden=true.", alias="includeHidden") - limit_create: Optional[StrictInt] = Field(default=3, description="Maximum number of created results.", alias="limitCreate") - limit_create_context: Optional[StrictInt] = Field(default=10, description="Maximum number of relevant objects included into context for LLM (for each object type).", alias="limitCreateContext") - limit_search: Optional[StrictInt] = Field(default=5, description="Maximum number of search results.", alias="limitSearch") - object_types: Optional[List[StrictStr]] = Field(default=None, description="List of object types to filter the search and visualization building. If empty or null, all object types are considered.", alias="objectTypes") - question: Annotated[str, Field(strict=True, max_length=2000)] = Field(description="User question") - relevant_score_threshold: Optional[Union[StrictFloat, StrictInt]] = Field(default=0.45, description="Score, above which we return found objects. Below this score objects are not relevant.", alias="relevantScoreThreshold") - search_score_threshold: Optional[Union[StrictFloat, StrictInt]] = Field(default=0.9, description="Score, above which we return found object(s) and don't call LLM to create new objects.", alias="searchScoreThreshold") - thread_id_suffix: Optional[StrictStr] = Field(default=None, description="Chat History thread suffix appended to ID generated by backend. Enables more chat windows.", alias="threadIdSuffix") - title_to_descriptor_ratio: Optional[Union[StrictFloat, StrictInt]] = Field(default=0.7, description="Temporary for experiments. Ratio of title score to descriptor score.", alias="titleToDescriptorRatio") - user_context: Optional[UserContext] = Field(default=None, alias="userContext") - __properties: ClassVar[List[str]] = ["allowedRelationshipTypes", "includeHidden", "limitCreate", "limitCreateContext", "limitSearch", "objectTypes", "question", "relevantScoreThreshold", "searchScoreThreshold", "threadIdSuffix", "titleToDescriptorRatio", "userContext"] - - @field_validator('object_types') - def object_types_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard']): - raise ValueError("each list item must be one of ('attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChatRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in allowed_relationship_types (list) - _items = [] - if self.allowed_relationship_types: - for _item_allowed_relationship_types in self.allowed_relationship_types: - if _item_allowed_relationship_types: - _items.append(_item_allowed_relationship_types.to_dict()) - _dict['allowedRelationshipTypes'] = _items - # override the default output from pydantic by calling `to_dict()` of user_context - if self.user_context: - _dict['userContext'] = self.user_context.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChatRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedRelationshipTypes": [AllowedRelationshipType.from_dict(_item) for _item in obj["allowedRelationshipTypes"]] if obj.get("allowedRelationshipTypes") is not None else None, - "includeHidden": obj.get("includeHidden") if obj.get("includeHidden") is not None else False, - "limitCreate": obj.get("limitCreate") if obj.get("limitCreate") is not None else 3, - "limitCreateContext": obj.get("limitCreateContext") if obj.get("limitCreateContext") is not None else 10, - "limitSearch": obj.get("limitSearch") if obj.get("limitSearch") is not None else 5, - "objectTypes": obj.get("objectTypes"), - "question": obj.get("question"), - "relevantScoreThreshold": obj.get("relevantScoreThreshold") if obj.get("relevantScoreThreshold") is not None else 0.45, - "searchScoreThreshold": obj.get("searchScoreThreshold") if obj.get("searchScoreThreshold") is not None else 0.9, - "threadIdSuffix": obj.get("threadIdSuffix"), - "titleToDescriptorRatio": obj.get("titleToDescriptorRatio") if obj.get("titleToDescriptorRatio") is not None else 0.7, - "userContext": UserContext.from_dict(obj["userContext"]) if obj.get("userContext") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/chat_result.py b/gooddata-api-client/gooddata_api_client/models/chat_result.py deleted file mode 100644 index 2ebdd3715..000000000 --- a/gooddata-api-client/gooddata_api_client/models/chat_result.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.change_analysis_params import ChangeAnalysisParams -from gooddata_api_client.models.created_visualizations import CreatedVisualizations -from gooddata_api_client.models.found_objects import FoundObjects -from gooddata_api_client.models.reasoning import Reasoning -from gooddata_api_client.models.route_result import RouteResult -from gooddata_api_client.models.search_result import SearchResult -from typing import Optional, Set -from typing_extensions import Self - -class ChatResult(BaseModel): - """ - ChatResult - """ # noqa: E501 - change_analysis_params: Optional[ChangeAnalysisParams] = Field(default=None, alias="changeAnalysisParams") - chat_history_interaction_id: Optional[StrictStr] = Field(default=None, description="Chat History interaction ID. Unique ID for each interaction.", alias="chatHistoryInteractionId") - created_visualizations: Optional[CreatedVisualizations] = Field(default=None, alias="createdVisualizations") - error_response: Optional[StrictStr] = Field(default=None, description="Error response in anything fails.", alias="errorResponse") - found_objects: Optional[FoundObjects] = Field(default=None, alias="foundObjects") - reasoning: Optional[Reasoning] = None - routing: Optional[RouteResult] = None - semantic_search: Optional[SearchResult] = Field(default=None, alias="semanticSearch") - text_response: Optional[StrictStr] = Field(default=None, description="Text response for general questions.", alias="textResponse") - thread_id_suffix: Optional[StrictStr] = Field(default=None, description="Chat History thread suffix appended to ID generated by backend. Enables more chat windows.", alias="threadIdSuffix") - __properties: ClassVar[List[str]] = ["changeAnalysisParams", "chatHistoryInteractionId", "createdVisualizations", "errorResponse", "foundObjects", "reasoning", "routing", "semanticSearch", "textResponse", "threadIdSuffix"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChatResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of change_analysis_params - if self.change_analysis_params: - _dict['changeAnalysisParams'] = self.change_analysis_params.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_visualizations - if self.created_visualizations: - _dict['createdVisualizations'] = self.created_visualizations.to_dict() - # override the default output from pydantic by calling `to_dict()` of found_objects - if self.found_objects: - _dict['foundObjects'] = self.found_objects.to_dict() - # override the default output from pydantic by calling `to_dict()` of reasoning - if self.reasoning: - _dict['reasoning'] = self.reasoning.to_dict() - # override the default output from pydantic by calling `to_dict()` of routing - if self.routing: - _dict['routing'] = self.routing.to_dict() - # override the default output from pydantic by calling `to_dict()` of semantic_search - if self.semantic_search: - _dict['semanticSearch'] = self.semantic_search.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChatResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "changeAnalysisParams": ChangeAnalysisParams.from_dict(obj["changeAnalysisParams"]) if obj.get("changeAnalysisParams") is not None else None, - "chatHistoryInteractionId": obj.get("chatHistoryInteractionId"), - "createdVisualizations": CreatedVisualizations.from_dict(obj["createdVisualizations"]) if obj.get("createdVisualizations") is not None else None, - "errorResponse": obj.get("errorResponse"), - "foundObjects": FoundObjects.from_dict(obj["foundObjects"]) if obj.get("foundObjects") is not None else None, - "reasoning": Reasoning.from_dict(obj["reasoning"]) if obj.get("reasoning") is not None else None, - "routing": RouteResult.from_dict(obj["routing"]) if obj.get("routing") is not None else None, - "semanticSearch": SearchResult.from_dict(obj["semanticSearch"]) if obj.get("semanticSearch") is not None else None, - "textResponse": obj.get("textResponse"), - "threadIdSuffix": obj.get("threadIdSuffix") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/chat_usage_response.py b/gooddata-api-client/gooddata_api_client/models/chat_usage_response.py deleted file mode 100644 index c8e2e6e22..000000000 --- a/gooddata-api-client/gooddata_api_client/models/chat_usage_response.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ChatUsageResponse(BaseModel): - """ - ChatUsageResponse - """ # noqa: E501 - interaction_count: StrictInt = Field(description="Number of interactions in the time window", alias="interactionCount") - interaction_limit: StrictInt = Field(description="Maximum number of interactions in the time window any user can do in the workspace", alias="interactionLimit") - time_window_hours: StrictInt = Field(description="Time window in hours", alias="timeWindowHours") - __properties: ClassVar[List[str]] = ["interactionCount", "interactionLimit", "timeWindowHours"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ChatUsageResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ChatUsageResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "interactionCount": obj.get("interactionCount"), - "interactionLimit": obj.get("interactionLimit"), - "timeWindowHours": obj.get("timeWindowHours") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/clustering_config.py b/gooddata-api-client/gooddata_api_client/models/clustering_config.py deleted file mode 100644 index 13e3641a8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/clustering_config.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class ClusteringConfig(BaseModel): - """ - Clustering configuration. - """ # noqa: E501 - number_of_clusters: StrictInt = Field(description="Number of clusters to create", alias="numberOfClusters") - threshold: Union[StrictFloat, StrictInt] = Field(description="Clustering algorithm threshold") - __properties: ClassVar[List[str]] = ["numberOfClusters", "threshold"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ClusteringConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ClusteringConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "numberOfClusters": obj.get("numberOfClusters"), - "threshold": obj.get("threshold") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/clustering_request.py b/gooddata-api-client/gooddata_api_client/models/clustering_request.py deleted file mode 100644 index 82e21441f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/clustering_request.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class ClusteringRequest(BaseModel): - """ - ClusteringRequest - """ # noqa: E501 - number_of_clusters: Annotated[int, Field(strict=True, ge=1)] = Field(description="Number of clusters to create", alias="numberOfClusters") - threshold: Optional[Union[Annotated[float, Field(strict=True, gt=0)], Annotated[int, Field(strict=True, gt=0)]]] = Field(default=0.03, description="Threshold used for algorithm") - __properties: ClassVar[List[str]] = ["numberOfClusters", "threshold"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ClusteringRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ClusteringRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "numberOfClusters": obj.get("numberOfClusters"), - "threshold": obj.get("threshold") if obj.get("threshold") is not None else 0.03 - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/clustering_result.py b/gooddata-api-client/gooddata_api_client/models/clustering_result.py deleted file mode 100644 index 546f87aae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/clustering_result.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class ClusteringResult(BaseModel): - """ - ClusteringResult - """ # noqa: E501 - attribute: List[Dict[str, Any]] - clusters: List[Optional[StrictInt]] - x_coord: Optional[List[Optional[Union[StrictFloat, StrictInt]]]] = Field(default=None, alias="xCoord") - xcoord: List[Union[StrictFloat, StrictInt]] - y_coord: Optional[List[Optional[Union[StrictFloat, StrictInt]]]] = Field(default=None, alias="yCoord") - ycoord: List[Union[StrictFloat, StrictInt]] - __properties: ClassVar[List[str]] = ["attribute", "clusters", "xCoord", "xcoord", "yCoord", "ycoord"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ClusteringResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ClusteringResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": obj.get("attribute"), - "clusters": obj.get("clusters"), - "xCoord": obj.get("xCoord"), - "xcoord": obj.get("xcoord"), - "yCoord": obj.get("yCoord"), - "ycoord": obj.get("ycoord") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_override.py b/gooddata-api-client/gooddata_api_client/models/column_override.py deleted file mode 100644 index eafd31bc5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_override.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ColumnOverride(BaseModel): - """ - Table column override. - """ # noqa: E501 - label_target_column: Optional[StrictStr] = Field(default=None, description="Specifies the attribute's column to which this label is associated.", alias="labelTargetColumn") - label_type: Optional[StrictStr] = Field(default=None, description="Label type for the target attribute.", alias="labelType") - ldm_type_override: Optional[StrictStr] = Field(default=None, description="Logical Data Model type for the column.", alias="ldmTypeOverride") - name: StrictStr = Field(description="Column name.") - __properties: ClassVar[List[str]] = ["labelTargetColumn", "labelType", "ldmTypeOverride", "name"] - - @field_validator('label_type') - def label_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE')") - return value - - @field_validator('ldm_type_override') - def ldm_type_override_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['FACT', 'LABEL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('FACT', 'LABEL')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ColumnOverride from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ColumnOverride from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "labelTargetColumn": obj.get("labelTargetColumn"), - "labelType": obj.get("labelType"), - "ldmTypeOverride": obj.get("ldmTypeOverride"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_statistic.py b/gooddata-api-client/gooddata_api_client/models/column_statistic.py deleted file mode 100644 index ce03b4e09..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_statistic.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ColumnStatistic(BaseModel): - """ - ColumnStatistic - """ # noqa: E501 - type: StrictStr - value: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["type", "value"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['COUNT', 'COUNT_NULL', 'COUNT_UNIQUE', 'AVG', 'STDDEV', 'MIN', 'MAX', 'PERCENTILE_25', 'PERCENTILE_50', 'PERCENTILE_75']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('COUNT', 'COUNT_NULL', 'COUNT_UNIQUE', 'AVG', 'STDDEV', 'MIN', 'MAX', 'PERCENTILE_25', 'PERCENTILE_50', 'PERCENTILE_75')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ColumnStatistic from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ColumnStatistic from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "type": obj.get("type"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_statistic_warning.py b/gooddata-api-client/gooddata_api_client/models/column_statistic_warning.py deleted file mode 100644 index 03bed3459..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_statistic_warning.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ColumnStatisticWarning(BaseModel): - """ - ColumnStatisticWarning - """ # noqa: E501 - action: StrictStr - message: StrictStr - __properties: ClassVar[List[str]] = ["action", "message"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ColumnStatisticWarning from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ColumnStatisticWarning from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "action": obj.get("action"), - "message": obj.get("message") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_statistics_request.py b/gooddata-api-client/gooddata_api_client/models/column_statistics_request.py deleted file mode 100644 index f3e7f488c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_statistics_request.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.column_statistics_request_from import ColumnStatisticsRequestFrom -from gooddata_api_client.models.frequency_properties import FrequencyProperties -from gooddata_api_client.models.histogram_properties import HistogramProperties -from typing import Optional, Set -from typing_extensions import Self - -class ColumnStatisticsRequest(BaseModel): - """ - A request to retrieve statistics for a column. - """ # noqa: E501 - column_name: StrictStr = Field(alias="columnName") - frequency: Optional[FrequencyProperties] = None - var_from: ColumnStatisticsRequestFrom = Field(alias="from") - histogram: Optional[HistogramProperties] = None - statistics: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["columnName", "frequency", "from", "histogram", "statistics"] - - @field_validator('statistics') - def statistics_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['COUNT', 'COUNT_NULL', 'COUNT_UNIQUE', 'AVG', 'STDDEV', 'MIN', 'MAX', 'PERCENTILE_25', 'PERCENTILE_50', 'PERCENTILE_75']): - raise ValueError("each list item must be one of ('COUNT', 'COUNT_NULL', 'COUNT_UNIQUE', 'AVG', 'STDDEV', 'MIN', 'MAX', 'PERCENTILE_25', 'PERCENTILE_50', 'PERCENTILE_75')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ColumnStatisticsRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of frequency - if self.frequency: - _dict['frequency'] = self.frequency.to_dict() - # override the default output from pydantic by calling `to_dict()` of var_from - if self.var_from: - _dict['from'] = self.var_from.to_dict() - # override the default output from pydantic by calling `to_dict()` of histogram - if self.histogram: - _dict['histogram'] = self.histogram.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ColumnStatisticsRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columnName": obj.get("columnName"), - "frequency": FrequencyProperties.from_dict(obj["frequency"]) if obj.get("frequency") is not None else None, - "from": ColumnStatisticsRequestFrom.from_dict(obj["from"]) if obj.get("from") is not None else None, - "histogram": HistogramProperties.from_dict(obj["histogram"]) if obj.get("histogram") is not None else None, - "statistics": obj.get("statistics") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_statistics_request_from.py b/gooddata-api-client/gooddata_api_client/models/column_statistics_request_from.py deleted file mode 100644 index f149c035a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_statistics_request_from.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.sql_query import SqlQuery -from gooddata_api_client.models.table import Table -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -COLUMNSTATISTICSREQUESTFROM_ONE_OF_SCHEMAS = ["SqlQuery", "Table"] - -class ColumnStatisticsRequestFrom(BaseModel): - """ - ColumnStatisticsRequestFrom - """ - # data type: SqlQuery - oneof_schema_1_validator: Optional[SqlQuery] = None - # data type: Table - oneof_schema_2_validator: Optional[Table] = None - actual_instance: Optional[Union[SqlQuery, Table]] = None - one_of_schemas: Set[str] = { "SqlQuery", "Table" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ColumnStatisticsRequestFrom.model_construct() - error_messages = [] - match = 0 - # validate data type: SqlQuery - if not isinstance(v, SqlQuery): - error_messages.append(f"Error! Input type `{type(v)}` is not `SqlQuery`") - else: - match += 1 - # validate data type: Table - if not isinstance(v, Table): - error_messages.append(f"Error! Input type `{type(v)}` is not `Table`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ColumnStatisticsRequestFrom with oneOf schemas: SqlQuery, Table. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into SqlQuery - try: - if match == 0: - instance.actual_instance = SqlQuery.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Table - try: - if match == 0: - instance.actual_instance = Table.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ColumnStatisticsRequestFrom with oneOf schemas: SqlQuery, Table. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], SqlQuery, Table]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_statistics_response.py b/gooddata-api-client/gooddata_api_client/models/column_statistics_response.py deleted file mode 100644 index e0c1b122c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_statistics_response.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.column_statistic import ColumnStatistic -from gooddata_api_client.models.column_statistic_warning import ColumnStatisticWarning -from gooddata_api_client.models.frequency import Frequency -from gooddata_api_client.models.histogram import Histogram -from typing import Optional, Set -from typing_extensions import Self - -class ColumnStatisticsResponse(BaseModel): - """ - ColumnStatisticsResponse - """ # noqa: E501 - frequency: Optional[Frequency] = None - histogram: Optional[Histogram] = None - statistics: Optional[List[ColumnStatistic]] = None - warnings: Optional[List[ColumnStatisticWarning]] = None - __properties: ClassVar[List[str]] = ["frequency", "histogram", "statistics", "warnings"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ColumnStatisticsResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of frequency - if self.frequency: - _dict['frequency'] = self.frequency.to_dict() - # override the default output from pydantic by calling `to_dict()` of histogram - if self.histogram: - _dict['histogram'] = self.histogram.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in statistics (list) - _items = [] - if self.statistics: - for _item_statistics in self.statistics: - if _item_statistics: - _items.append(_item_statistics.to_dict()) - _dict['statistics'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in warnings (list) - _items = [] - if self.warnings: - for _item_warnings in self.warnings: - if _item_warnings: - _items.append(_item_warnings.to_dict()) - _dict['warnings'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ColumnStatisticsResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "frequency": Frequency.from_dict(obj["frequency"]) if obj.get("frequency") is not None else None, - "histogram": Histogram.from_dict(obj["histogram"]) if obj.get("histogram") is not None else None, - "statistics": [ColumnStatistic.from_dict(_item) for _item in obj["statistics"]] if obj.get("statistics") is not None else None, - "warnings": [ColumnStatisticWarning.from_dict(_item) for _item in obj["warnings"]] if obj.get("warnings") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/column_warning.py b/gooddata-api-client/gooddata_api_client/models/column_warning.py deleted file mode 100644 index 3e6c6bb6f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/column_warning.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ColumnWarning(BaseModel): - """ - Warning related to single column. - """ # noqa: E501 - message: StrictStr = Field(description="Warning message related to the column.") - name: StrictStr = Field(description="Column name.") - __properties: ClassVar[List[str]] = ["message", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ColumnWarning from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ColumnWarning from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "message": obj.get("message"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/comparison.py b/gooddata-api-client/gooddata_api_client/models/comparison.py deleted file mode 100644 index a60d0d265..000000000 --- a/gooddata-api-client/gooddata_api_client/models/comparison.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.alert_condition_operand import AlertConditionOperand -from gooddata_api_client.models.local_identifier import LocalIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class Comparison(BaseModel): - """ - Comparison - """ # noqa: E501 - left: LocalIdentifier - operator: StrictStr - right: AlertConditionOperand - __properties: ClassVar[List[str]] = ["left", "operator", "right"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['GREATER_THAN', 'GREATER_THAN_OR_EQUAL_TO', 'LESS_THAN', 'LESS_THAN_OR_EQUAL_TO', 'EQUAL_TO', 'NOT_EQUAL_TO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('GREATER_THAN', 'GREATER_THAN_OR_EQUAL_TO', 'LESS_THAN', 'LESS_THAN_OR_EQUAL_TO', 'EQUAL_TO', 'NOT_EQUAL_TO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Comparison from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of left - if self.left: - _dict['left'] = self.left.to_dict() - # override the default output from pydantic by calling `to_dict()` of right - if self.right: - _dict['right'] = self.right.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Comparison from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "left": LocalIdentifier.from_dict(obj["left"]) if obj.get("left") is not None else None, - "operator": obj.get("operator"), - "right": AlertConditionOperand.from_dict(obj["right"]) if obj.get("right") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/comparison_condition.py b/gooddata-api-client/gooddata_api_client/models/comparison_condition.py deleted file mode 100644 index 6fbaf64b9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/comparison_condition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.comparison_condition_comparison import ComparisonConditionComparison -from typing import Optional, Set -from typing_extensions import Self - -class ComparisonCondition(BaseModel): - """ - Condition that compares the metric value to a given constant value using a comparison operator. - """ # noqa: E501 - comparison: ComparisonConditionComparison - __properties: ClassVar[List[str]] = ["comparison"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ComparisonCondition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of comparison - if self.comparison: - _dict['comparison'] = self.comparison.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ComparisonCondition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "comparison": ComparisonConditionComparison.from_dict(obj["comparison"]) if obj.get("comparison") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/comparison_condition_comparison.py b/gooddata-api-client/gooddata_api_client/models/comparison_condition_comparison.py deleted file mode 100644 index 376dd6423..000000000 --- a/gooddata-api-client/gooddata_api_client/models/comparison_condition_comparison.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class ComparisonConditionComparison(BaseModel): - """ - ComparisonConditionComparison - """ # noqa: E501 - operator: StrictStr - value: Union[StrictFloat, StrictInt] - __properties: ClassVar[List[str]] = ["operator", "value"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['GREATER_THAN', 'GREATER_THAN_OR_EQUAL_TO', 'LESS_THAN', 'LESS_THAN_OR_EQUAL_TO', 'EQUAL_TO', 'NOT_EQUAL_TO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('GREATER_THAN', 'GREATER_THAN_OR_EQUAL_TO', 'LESS_THAN', 'LESS_THAN_OR_EQUAL_TO', 'EQUAL_TO', 'NOT_EQUAL_TO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ComparisonConditionComparison from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ComparisonConditionComparison from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "operator": obj.get("operator"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter.py deleted file mode 100644 index 48a71fd73..000000000 --- a/gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.comparison_measure_value_filter_comparison_measure_value_filter import ComparisonMeasureValueFilterComparisonMeasureValueFilter -from typing import Optional, Set -from typing_extensions import Self - -class ComparisonMeasureValueFilter(BaseModel): - """ - Filter the result by comparing specified metric to given constant value, using given comparison operator. - """ # noqa: E501 - comparison_measure_value_filter: ComparisonMeasureValueFilterComparisonMeasureValueFilter = Field(alias="comparisonMeasureValueFilter") - __properties: ClassVar[List[str]] = ["comparisonMeasureValueFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ComparisonMeasureValueFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of comparison_measure_value_filter - if self.comparison_measure_value_filter: - _dict['comparisonMeasureValueFilter'] = self.comparison_measure_value_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ComparisonMeasureValueFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "comparisonMeasureValueFilter": ComparisonMeasureValueFilterComparisonMeasureValueFilter.from_dict(obj["comparisonMeasureValueFilter"]) if obj.get("comparisonMeasureValueFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter_comparison_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter_comparison_measure_value_filter.py deleted file mode 100644 index acd076649..000000000 --- a/gooddata-api-client/gooddata_api_client/models/comparison_measure_value_filter_comparison_measure_value_filter.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional, Union -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class ComparisonMeasureValueFilterComparisonMeasureValueFilter(BaseModel): - """ - ComparisonMeasureValueFilterComparisonMeasureValueFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - dimensionality: Optional[List[AfmIdentifier]] = Field(default=None, description="References to the attributes to be used when filtering.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - measure: AfmIdentifier - operator: StrictStr - treat_null_values_as: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="A value that will be substituted for null values in the metric for the comparisons.", alias="treatNullValuesAs") - value: Union[StrictFloat, StrictInt] - __properties: ClassVar[List[str]] = ["applyOnResult", "dimensionality", "localIdentifier", "measure", "operator", "treatNullValuesAs", "value"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['GREATER_THAN', 'GREATER_THAN_OR_EQUAL_TO', 'LESS_THAN', 'LESS_THAN_OR_EQUAL_TO', 'EQUAL_TO', 'NOT_EQUAL_TO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('GREATER_THAN', 'GREATER_THAN_OR_EQUAL_TO', 'LESS_THAN', 'LESS_THAN_OR_EQUAL_TO', 'EQUAL_TO', 'NOT_EQUAL_TO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ComparisonMeasureValueFilterComparisonMeasureValueFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimensionality (list) - _items = [] - if self.dimensionality: - for _item_dimensionality in self.dimensionality: - if _item_dimensionality: - _items.append(_item_dimensionality.to_dict()) - _dict['dimensionality'] = _items - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ComparisonMeasureValueFilterComparisonMeasureValueFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "dimensionality": [AfmIdentifier.from_dict(_item) for _item in obj["dimensionality"]] if obj.get("dimensionality") is not None else None, - "localIdentifier": obj.get("localIdentifier"), - "measure": AfmIdentifier.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "operator": obj.get("operator"), - "treatNullValuesAs": obj.get("treatNullValuesAs"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/comparison_wrapper.py b/gooddata-api-client/gooddata_api_client/models/comparison_wrapper.py deleted file mode 100644 index d6aa08396..000000000 --- a/gooddata-api-client/gooddata_api_client/models/comparison_wrapper.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.comparison import Comparison -from typing import Optional, Set -from typing_extensions import Self - -class ComparisonWrapper(BaseModel): - """ - ComparisonWrapper - """ # noqa: E501 - comparison: Comparison - __properties: ClassVar[List[str]] = ["comparison"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ComparisonWrapper from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of comparison - if self.comparison: - _dict['comparison'] = self.comparison.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ComparisonWrapper from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "comparison": Comparison.from_dict(obj["comparison"]) if obj.get("comparison") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter.py deleted file mode 100644 index dbc8734be..000000000 --- a/gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.compound_measure_value_filter_compound_measure_value_filter import CompoundMeasureValueFilterCompoundMeasureValueFilter -from typing import Optional, Set -from typing_extensions import Self - -class CompoundMeasureValueFilter(BaseModel): - """ - Filter the result by applying multiple comparison and/or range conditions combined with OR logic. If conditions list is empty, no filtering is applied (all rows are returned). - """ # noqa: E501 - compound_measure_value_filter: CompoundMeasureValueFilterCompoundMeasureValueFilter = Field(alias="compoundMeasureValueFilter") - __properties: ClassVar[List[str]] = ["compoundMeasureValueFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CompoundMeasureValueFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of compound_measure_value_filter - if self.compound_measure_value_filter: - _dict['compoundMeasureValueFilter'] = self.compound_measure_value_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CompoundMeasureValueFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "compoundMeasureValueFilter": CompoundMeasureValueFilterCompoundMeasureValueFilter.from_dict(obj["compoundMeasureValueFilter"]) if obj.get("compoundMeasureValueFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter_compound_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter_compound_measure_value_filter.py deleted file mode 100644 index 5ffcf198b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/compound_measure_value_filter_compound_measure_value_filter.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from gooddata_api_client.models.measure_value_condition import MeasureValueCondition -from typing import Optional, Set -from typing_extensions import Self - -class CompoundMeasureValueFilterCompoundMeasureValueFilter(BaseModel): - """ - CompoundMeasureValueFilterCompoundMeasureValueFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - conditions: List[MeasureValueCondition] = Field(description="List of conditions to apply. Conditions are combined with OR logic. Each condition can be either a comparison (e.g., > 100) or a range (e.g., BETWEEN 10 AND 50). If empty, no filtering is applied and all rows are returned.") - dimensionality: Optional[List[AfmIdentifier]] = Field(default=None, description="References to the attributes to be used when filtering.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - measure: AfmIdentifier - treat_null_values_as: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="A value that will be substituted for null values in the metric for the comparisons.", alias="treatNullValuesAs") - __properties: ClassVar[List[str]] = ["applyOnResult", "conditions", "dimensionality", "localIdentifier", "measure", "treatNullValuesAs"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CompoundMeasureValueFilterCompoundMeasureValueFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in conditions (list) - _items = [] - if self.conditions: - for _item_conditions in self.conditions: - if _item_conditions: - _items.append(_item_conditions.to_dict()) - _dict['conditions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in dimensionality (list) - _items = [] - if self.dimensionality: - for _item_dimensionality in self.dimensionality: - if _item_dimensionality: - _items.append(_item_dimensionality.to_dict()) - _dict['dimensionality'] = _items - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CompoundMeasureValueFilterCompoundMeasureValueFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "conditions": [MeasureValueCondition.from_dict(_item) for _item in obj["conditions"]] if obj.get("conditions") is not None else None, - "dimensionality": [AfmIdentifier.from_dict(_item) for _item in obj["dimensionality"]] if obj.get("dimensionality") is not None else None, - "localIdentifier": obj.get("localIdentifier"), - "measure": AfmIdentifier.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "treatNullValuesAs": obj.get("treatNullValuesAs") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/content_slide_template.py b/gooddata-api-client/gooddata_api_client/models/content_slide_template.py deleted file mode 100644 index ee6e45ae5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/content_slide_template.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.running_section import RunningSection -from typing import Optional, Set -from typing_extensions import Self - -class ContentSlideTemplate(BaseModel): - """ - Settings for content slide. - """ # noqa: E501 - description_field: Optional[StrictStr] = Field(default=None, alias="descriptionField") - footer: Optional[RunningSection] = None - header: Optional[RunningSection] = None - __properties: ClassVar[List[str]] = ["descriptionField", "footer", "header"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ContentSlideTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of footer - if self.footer: - _dict['footer'] = self.footer.to_dict() - # override the default output from pydantic by calling `to_dict()` of header - if self.header: - _dict['header'] = self.header.to_dict() - # set to None if description_field (nullable) is None - # and model_fields_set contains the field - if self.description_field is None and "description_field" in self.model_fields_set: - _dict['descriptionField'] = None - - # set to None if footer (nullable) is None - # and model_fields_set contains the field - if self.footer is None and "footer" in self.model_fields_set: - _dict['footer'] = None - - # set to None if header (nullable) is None - # and model_fields_set contains the field - if self.header is None and "header" in self.model_fields_set: - _dict['header'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ContentSlideTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "descriptionField": obj.get("descriptionField"), - "footer": RunningSection.from_dict(obj["footer"]) if obj.get("footer") is not None else None, - "header": RunningSection.from_dict(obj["header"]) if obj.get("header") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/cover_slide_template.py b/gooddata-api-client/gooddata_api_client/models/cover_slide_template.py deleted file mode 100644 index 2af866d56..000000000 --- a/gooddata-api-client/gooddata_api_client/models/cover_slide_template.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.running_section import RunningSection -from typing import Optional, Set -from typing_extensions import Self - -class CoverSlideTemplate(BaseModel): - """ - Settings for cover slide. - """ # noqa: E501 - background_image: Optional[StrictBool] = Field(default=True, description="Show background image on the slide.", alias="backgroundImage") - description_field: Optional[StrictStr] = Field(default=None, alias="descriptionField") - footer: Optional[RunningSection] = None - header: Optional[RunningSection] = None - __properties: ClassVar[List[str]] = ["backgroundImage", "descriptionField", "footer", "header"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CoverSlideTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of footer - if self.footer: - _dict['footer'] = self.footer.to_dict() - # override the default output from pydantic by calling `to_dict()` of header - if self.header: - _dict['header'] = self.header.to_dict() - # set to None if description_field (nullable) is None - # and model_fields_set contains the field - if self.description_field is None and "description_field" in self.model_fields_set: - _dict['descriptionField'] = None - - # set to None if footer (nullable) is None - # and model_fields_set contains the field - if self.footer is None and "footer" in self.model_fields_set: - _dict['footer'] = None - - # set to None if header (nullable) is None - # and model_fields_set contains the field - if self.header is None and "header" in self.model_fields_set: - _dict['header'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CoverSlideTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "backgroundImage": obj.get("backgroundImage") if obj.get("backgroundImage") is not None else True, - "descriptionField": obj.get("descriptionField"), - "footer": RunningSection.from_dict(obj["footer"]) if obj.get("footer") is not None else None, - "header": RunningSection.from_dict(obj["header"]) if obj.get("header") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/create_knowledge_document_request_dto.py b/gooddata-api-client/gooddata_api_client/models/create_knowledge_document_request_dto.py deleted file mode 100644 index c9e52c439..000000000 --- a/gooddata-api-client/gooddata_api_client/models/create_knowledge_document_request_dto.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class CreateKnowledgeDocumentRequestDto(BaseModel): - """ - CreateKnowledgeDocumentRequestDto - """ # noqa: E501 - content: StrictStr - filename: StrictStr - page_boundaries: Optional[List[StrictInt]] = Field(default=None, alias="pageBoundaries") - scopes: Optional[List[StrictStr]] = None - title: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["content", "filename", "pageBoundaries", "scopes", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CreateKnowledgeDocumentRequestDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CreateKnowledgeDocumentRequestDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "filename": obj.get("filename"), - "pageBoundaries": obj.get("pageBoundaries"), - "scopes": obj.get("scopes"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/create_knowledge_document_response_dto.py b/gooddata-api-client/gooddata_api_client/models/create_knowledge_document_response_dto.py deleted file mode 100644 index 301d9f6b6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/create_knowledge_document_response_dto.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class CreateKnowledgeDocumentResponseDto(BaseModel): - """ - CreateKnowledgeDocumentResponseDto - """ # noqa: E501 - filename: StrictStr - message: StrictStr - num_chunks: StrictInt = Field(alias="numChunks") - success: StrictBool - __properties: ClassVar[List[str]] = ["filename", "message", "numChunks", "success"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CreateKnowledgeDocumentResponseDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CreateKnowledgeDocumentResponseDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filename": obj.get("filename"), - "message": obj.get("message"), - "numChunks": obj.get("numChunks"), - "success": obj.get("success") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/created_visualization.py b/gooddata-api-client/gooddata_api_client/models/created_visualization.py deleted file mode 100644 index 044a8de58..000000000 --- a/gooddata-api-client/gooddata_api_client/models/created_visualization.py +++ /dev/null @@ -1,148 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.created_visualization_filters_inner import CreatedVisualizationFiltersInner -from gooddata_api_client.models.dim_attribute import DimAttribute -from gooddata_api_client.models.metric import Metric -from gooddata_api_client.models.suggestion import Suggestion -from gooddata_api_client.models.visualization_config import VisualizationConfig -from typing import Optional, Set -from typing_extensions import Self - -class CreatedVisualization(BaseModel): - """ - List of created visualization objects - """ # noqa: E501 - config: Optional[VisualizationConfig] = None - dimensionality: List[DimAttribute] = Field(description="List of attributes representing the dimensionality of the new visualization") - filters: List[CreatedVisualizationFiltersInner] = Field(description="List of filters to be applied to the new visualization") - id: StrictStr = Field(description="Proposed ID of the new visualization") - metrics: List[Metric] = Field(description="List of metrics to be used in the new visualization") - saved_visualization_id: Optional[StrictStr] = Field(default=None, description="Saved visualization ID.", alias="savedVisualizationId") - suggestions: List[Suggestion] = Field(description="Suggestions for next steps") - title: StrictStr = Field(description="Proposed title of the new visualization") - visualization_type: StrictStr = Field(description="Visualization type requested in question", alias="visualizationType") - __properties: ClassVar[List[str]] = ["config", "dimensionality", "filters", "id", "metrics", "savedVisualizationId", "suggestions", "title", "visualizationType"] - - @field_validator('visualization_type') - def visualization_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['TABLE', 'HEADLINE', 'BAR', 'LINE', 'PIE', 'COLUMN', 'SCATTER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TABLE', 'HEADLINE', 'BAR', 'LINE', 'PIE', 'COLUMN', 'SCATTER')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CreatedVisualization from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of config - if self.config: - _dict['config'] = self.config.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dimensionality (list) - _items = [] - if self.dimensionality: - for _item_dimensionality in self.dimensionality: - if _item_dimensionality: - _items.append(_item_dimensionality.to_dict()) - _dict['dimensionality'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in metrics (list) - _items = [] - if self.metrics: - for _item_metrics in self.metrics: - if _item_metrics: - _items.append(_item_metrics.to_dict()) - _dict['metrics'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in suggestions (list) - _items = [] - if self.suggestions: - for _item_suggestions in self.suggestions: - if _item_suggestions: - _items.append(_item_suggestions.to_dict()) - _dict['suggestions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CreatedVisualization from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "config": VisualizationConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, - "dimensionality": [DimAttribute.from_dict(_item) for _item in obj["dimensionality"]] if obj.get("dimensionality") is not None else None, - "filters": [CreatedVisualizationFiltersInner.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "id": obj.get("id"), - "metrics": [Metric.from_dict(_item) for _item in obj["metrics"]] if obj.get("metrics") is not None else None, - "savedVisualizationId": obj.get("savedVisualizationId"), - "suggestions": [Suggestion.from_dict(_item) for _item in obj["suggestions"]] if obj.get("suggestions") is not None else None, - "title": obj.get("title"), - "visualizationType": obj.get("visualizationType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/created_visualization_filters_inner.py b/gooddata-api-client/gooddata_api_client/models/created_visualization_filters_inner.py deleted file mode 100644 index 55b4cf8cc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/created_visualization_filters_inner.py +++ /dev/null @@ -1,186 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.attribute_negative_filter import AttributeNegativeFilter -from gooddata_api_client.models.attribute_positive_filter import AttributePositiveFilter -from gooddata_api_client.models.date_absolute_filter import DateAbsoluteFilter -from gooddata_api_client.models.date_relative_filter import DateRelativeFilter -from gooddata_api_client.models.ranking_filter import RankingFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -CREATEDVISUALIZATIONFILTERSINNER_ONE_OF_SCHEMAS = ["AttributeNegativeFilter", "AttributePositiveFilter", "DateAbsoluteFilter", "DateRelativeFilter", "RankingFilter"] - -class CreatedVisualizationFiltersInner(BaseModel): - """ - CreatedVisualizationFiltersInner - """ - # data type: AttributeNegativeFilter - oneof_schema_1_validator: Optional[AttributeNegativeFilter] = None - # data type: AttributePositiveFilter - oneof_schema_2_validator: Optional[AttributePositiveFilter] = None - # data type: DateAbsoluteFilter - oneof_schema_3_validator: Optional[DateAbsoluteFilter] = None - # data type: DateRelativeFilter - oneof_schema_4_validator: Optional[DateRelativeFilter] = None - # data type: RankingFilter - oneof_schema_5_validator: Optional[RankingFilter] = None - actual_instance: Optional[Union[AttributeNegativeFilter, AttributePositiveFilter, DateAbsoluteFilter, DateRelativeFilter, RankingFilter]] = None - one_of_schemas: Set[str] = { "AttributeNegativeFilter", "AttributePositiveFilter", "DateAbsoluteFilter", "DateRelativeFilter", "RankingFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = CreatedVisualizationFiltersInner.model_construct() - error_messages = [] - match = 0 - # validate data type: AttributeNegativeFilter - if not isinstance(v, AttributeNegativeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributeNegativeFilter`") - else: - match += 1 - # validate data type: AttributePositiveFilter - if not isinstance(v, AttributePositiveFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributePositiveFilter`") - else: - match += 1 - # validate data type: DateAbsoluteFilter - if not isinstance(v, DateAbsoluteFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `DateAbsoluteFilter`") - else: - match += 1 - # validate data type: DateRelativeFilter - if not isinstance(v, DateRelativeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `DateRelativeFilter`") - else: - match += 1 - # validate data type: RankingFilter - if not isinstance(v, RankingFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RankingFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in CreatedVisualizationFiltersInner with oneOf schemas: AttributeNegativeFilter, AttributePositiveFilter, DateAbsoluteFilter, DateRelativeFilter, RankingFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AttributeNegativeFilter - try: - if match == 0: - instance.actual_instance = AttributeNegativeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AttributePositiveFilter - try: - if match == 0: - instance.actual_instance = AttributePositiveFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into DateAbsoluteFilter - try: - if match == 0: - instance.actual_instance = DateAbsoluteFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into DateRelativeFilter - try: - if match == 0: - instance.actual_instance = DateRelativeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RankingFilter - try: - if match == 0: - instance.actual_instance = RankingFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into CreatedVisualizationFiltersInner with oneOf schemas: AttributeNegativeFilter, AttributePositiveFilter, DateAbsoluteFilter, DateRelativeFilter, RankingFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AttributeNegativeFilter, AttributePositiveFilter, DateAbsoluteFilter, DateRelativeFilter, RankingFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/created_visualizations.py b/gooddata-api-client/gooddata_api_client/models/created_visualizations.py deleted file mode 100644 index c797bd079..000000000 --- a/gooddata-api-client/gooddata_api_client/models/created_visualizations.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.created_visualization import CreatedVisualization -from gooddata_api_client.models.suggestion import Suggestion -from typing import Optional, Set -from typing_extensions import Self - -class CreatedVisualizations(BaseModel): - """ - Visualization definitions created by AI. - """ # noqa: E501 - objects: List[CreatedVisualization] = Field(description="List of created visualization objects") - reasoning: StrictStr = Field(description="DEPRECATED: Use top-level reasoning.steps instead. Reasoning from LLM. Description of how and why the answer was generated.") - suggestions: List[Suggestion] = Field(description="List of suggestions for next steps. Filled when no visualization was created, suggests alternatives.") - __properties: ClassVar[List[str]] = ["objects", "reasoning", "suggestions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CreatedVisualizations from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in objects (list) - _items = [] - if self.objects: - for _item_objects in self.objects: - if _item_objects: - _items.append(_item_objects.to_dict()) - _dict['objects'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in suggestions (list) - _items = [] - if self.suggestions: - for _item_suggestions in self.suggestions: - if _item_suggestions: - _items.append(_item_suggestions.to_dict()) - _dict['suggestions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CreatedVisualizations from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "objects": [CreatedVisualization.from_dict(_item) for _item in obj["objects"]] if obj.get("objects") is not None else None, - "reasoning": obj.get("reasoning"), - "suggestions": [Suggestion.from_dict(_item) for _item in obj["suggestions"]] if obj.get("suggestions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/custom_label.py b/gooddata-api-client/gooddata_api_client/models/custom_label.py deleted file mode 100644 index 2ed5d5faa..000000000 --- a/gooddata-api-client/gooddata_api_client/models/custom_label.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class CustomLabel(BaseModel): - """ - Custom label object override. - """ # noqa: E501 - title: StrictStr = Field(description="Override value.") - __properties: ClassVar[List[str]] = ["title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CustomLabel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CustomLabel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/custom_metric.py b/gooddata-api-client/gooddata_api_client/models/custom_metric.py deleted file mode 100644 index 3bc3b6fb7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/custom_metric.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class CustomMetric(BaseModel): - """ - Custom metric object override. - """ # noqa: E501 - format: StrictStr = Field(description="Format override.") - title: StrictStr = Field(description="Metric title override.") - __properties: ClassVar[List[str]] = ["format", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CustomMetric from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CustomMetric from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "format": obj.get("format"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/custom_override.py b/gooddata-api-client/gooddata_api_client/models/custom_override.py deleted file mode 100644 index d67277092..000000000 --- a/gooddata-api-client/gooddata_api_client/models/custom_override.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.custom_label import CustomLabel -from gooddata_api_client.models.custom_metric import CustomMetric -from typing import Optional, Set -from typing_extensions import Self - -class CustomOverride(BaseModel): - """ - Custom cell value overrides (IDs will be replaced with specified values). - """ # noqa: E501 - labels: Optional[Dict[str, CustomLabel]] = Field(default=None, description="Map of CustomLabels with keys used as placeholders in document.") - metrics: Optional[Dict[str, CustomMetric]] = Field(default=None, description="Map of CustomMetrics with keys used as placeholders in document.") - __properties: ClassVar[List[str]] = ["labels", "metrics"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of CustomOverride from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in labels (dict) - _field_dict = {} - if self.labels: - for _key_labels in self.labels: - if self.labels[_key_labels]: - _field_dict[_key_labels] = self.labels[_key_labels].to_dict() - _dict['labels'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of each value in metrics (dict) - _field_dict = {} - if self.metrics: - for _key_metrics in self.metrics: - if self.metrics[_key_metrics]: - _field_dict[_key_metrics] = self.metrics[_key_metrics].to_dict() - _dict['metrics'] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of CustomOverride from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "labels": dict( - (_k, CustomLabel.from_dict(_v)) - for _k, _v in obj["labels"].items() - ) - if obj.get("labels") is not None - else None, - "metrics": dict( - (_k, CustomMetric.from_dict(_v)) - for _k, _v in obj["metrics"].items() - ) - if obj.get("metrics") is not None - else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter.py deleted file mode 100644 index 9ee129a79..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dashboard_attribute_filter_attribute_filter import DashboardAttributeFilterAttributeFilter -from typing import Optional, Set -from typing_extensions import Self - -class DashboardAttributeFilter(BaseModel): - """ - DashboardAttributeFilter - """ # noqa: E501 - attribute_filter: DashboardAttributeFilterAttributeFilter = Field(alias="attributeFilter") - __properties: ClassVar[List[str]] = ["attributeFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute_filter - if self.attribute_filter: - _dict['attributeFilter'] = self.attribute_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeFilter": DashboardAttributeFilterAttributeFilter.from_dict(obj["attributeFilter"]) if obj.get("attributeFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter_attribute_filter.py deleted file mode 100644 index b1b5eeee8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_attribute_filter_attribute_filter.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.attribute_elements import AttributeElements -from gooddata_api_client.models.attribute_filter_by_date import AttributeFilterByDate -from gooddata_api_client.models.attribute_filter_parent import AttributeFilterParent -from gooddata_api_client.models.identifier_ref import IdentifierRef -from typing import Optional, Set -from typing_extensions import Self - -class DashboardAttributeFilterAttributeFilter(BaseModel): - """ - DashboardAttributeFilterAttributeFilter - """ # noqa: E501 - attribute_elements: AttributeElements = Field(alias="attributeElements") - display_form: IdentifierRef = Field(alias="displayForm") - filter_elements_by: Optional[List[AttributeFilterParent]] = Field(default=None, alias="filterElementsBy") - filter_elements_by_date: Optional[List[AttributeFilterByDate]] = Field(default=None, alias="filterElementsByDate") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - negative_selection: StrictBool = Field(alias="negativeSelection") - selection_mode: Optional[StrictStr] = Field(default=None, alias="selectionMode") - title: Optional[StrictStr] = None - validate_elements_by: Optional[List[IdentifierRef]] = Field(default=None, alias="validateElementsBy") - __properties: ClassVar[List[str]] = ["attributeElements", "displayForm", "filterElementsBy", "filterElementsByDate", "localIdentifier", "negativeSelection", "selectionMode", "title", "validateElementsBy"] - - @field_validator('selection_mode') - def selection_mode_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['single', 'multi']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('single', 'multi')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardAttributeFilterAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute_elements - if self.attribute_elements: - _dict['attributeElements'] = self.attribute_elements.to_dict() - # override the default output from pydantic by calling `to_dict()` of display_form - if self.display_form: - _dict['displayForm'] = self.display_form.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in filter_elements_by (list) - _items = [] - if self.filter_elements_by: - for _item_filter_elements_by in self.filter_elements_by: - if _item_filter_elements_by: - _items.append(_item_filter_elements_by.to_dict()) - _dict['filterElementsBy'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filter_elements_by_date (list) - _items = [] - if self.filter_elements_by_date: - for _item_filter_elements_by_date in self.filter_elements_by_date: - if _item_filter_elements_by_date: - _items.append(_item_filter_elements_by_date.to_dict()) - _dict['filterElementsByDate'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in validate_elements_by (list) - _items = [] - if self.validate_elements_by: - for _item_validate_elements_by in self.validate_elements_by: - if _item_validate_elements_by: - _items.append(_item_validate_elements_by.to_dict()) - _dict['validateElementsBy'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardAttributeFilterAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeElements": AttributeElements.from_dict(obj["attributeElements"]) if obj.get("attributeElements") is not None else None, - "displayForm": IdentifierRef.from_dict(obj["displayForm"]) if obj.get("displayForm") is not None else None, - "filterElementsBy": [AttributeFilterParent.from_dict(_item) for _item in obj["filterElementsBy"]] if obj.get("filterElementsBy") is not None else None, - "filterElementsByDate": [AttributeFilterByDate.from_dict(_item) for _item in obj["filterElementsByDate"]] if obj.get("filterElementsByDate") is not None else None, - "localIdentifier": obj.get("localIdentifier"), - "negativeSelection": obj.get("negativeSelection"), - "selectionMode": obj.get("selectionMode"), - "title": obj.get("title"), - "validateElementsBy": [IdentifierRef.from_dict(_item) for _item in obj["validateElementsBy"]] if obj.get("validateElementsBy") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_date_filter.py b/gooddata-api-client/gooddata_api_client/models/dashboard_date_filter.py deleted file mode 100644 index b9fe4d3ea..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_date_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dashboard_date_filter_date_filter import DashboardDateFilterDateFilter -from typing import Optional, Set -from typing_extensions import Self - -class DashboardDateFilter(BaseModel): - """ - DashboardDateFilter - """ # noqa: E501 - date_filter: DashboardDateFilterDateFilter = Field(alias="dateFilter") - __properties: ClassVar[List[str]] = ["dateFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of date_filter - if self.date_filter: - _dict['dateFilter'] = self.date_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dateFilter": DashboardDateFilterDateFilter.from_dict(obj["dateFilter"]) if obj.get("dateFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_date_filter_date_filter.py b/gooddata-api-client/gooddata_api_client/models/dashboard_date_filter_date_filter.py deleted file mode 100644 index 01d2b2a50..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_date_filter_date_filter.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.aac_dashboard_filter_from import AacDashboardFilterFrom -from gooddata_api_client.models.identifier_ref import IdentifierRef -from gooddata_api_client.models.relative_bounded_date_filter import RelativeBoundedDateFilter -from typing import Optional, Set -from typing_extensions import Self - -class DashboardDateFilterDateFilter(BaseModel): - """ - DashboardDateFilterDateFilter - """ # noqa: E501 - attribute: Optional[IdentifierRef] = None - bounded_filter: Optional[RelativeBoundedDateFilter] = Field(default=None, alias="boundedFilter") - data_set: Optional[IdentifierRef] = Field(default=None, alias="dataSet") - empty_value_handling: Optional[StrictStr] = Field(default=None, alias="emptyValueHandling") - var_from: Optional[AacDashboardFilterFrom] = Field(default=None, alias="from") - granularity: StrictStr - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - to: Optional[AacDashboardFilterFrom] = None - type: StrictStr - __properties: ClassVar[List[str]] = ["attribute", "boundedFilter", "dataSet", "emptyValueHandling", "from", "granularity", "localIdentifier", "to", "type"] - - @field_validator('empty_value_handling') - def empty_value_handling_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INCLUDE', 'EXCLUDE', 'ONLY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCLUDE', 'EXCLUDE', 'ONLY')") - return value - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ALL_TIME_GRANULARITY', 'GDC.time.year', 'GDC.time.week_us', 'GDC.time.week_in_year', 'GDC.time.week_in_quarter', 'GDC.time.week', 'GDC.time.euweek_in_year', 'GDC.time.euweek_in_quarter', 'GDC.time.quarter', 'GDC.time.quarter_in_year', 'GDC.time.month', 'GDC.time.month_in_quarter', 'GDC.time.month_in_year', 'GDC.time.day_in_year', 'GDC.time.day_in_quarter', 'GDC.time.day_in_month', 'GDC.time.day_in_week', 'GDC.time.day_in_euweek', 'GDC.time.date', 'GDC.time.hour', 'GDC.time.hour_in_day', 'GDC.time.minute', 'GDC.time.minute_in_hour', 'GDC.time.fiscal_month', 'GDC.time.fiscal_quarter', 'GDC.time.fiscal_year']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALL_TIME_GRANULARITY', 'GDC.time.year', 'GDC.time.week_us', 'GDC.time.week_in_year', 'GDC.time.week_in_quarter', 'GDC.time.week', 'GDC.time.euweek_in_year', 'GDC.time.euweek_in_quarter', 'GDC.time.quarter', 'GDC.time.quarter_in_year', 'GDC.time.month', 'GDC.time.month_in_quarter', 'GDC.time.month_in_year', 'GDC.time.day_in_year', 'GDC.time.day_in_quarter', 'GDC.time.day_in_month', 'GDC.time.day_in_week', 'GDC.time.day_in_euweek', 'GDC.time.date', 'GDC.time.hour', 'GDC.time.hour_in_day', 'GDC.time.minute', 'GDC.time.minute_in_hour', 'GDC.time.fiscal_month', 'GDC.time.fiscal_quarter', 'GDC.time.fiscal_year')") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['relative', 'absolute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('relative', 'absolute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardDateFilterDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute - if self.attribute: - _dict['attribute'] = self.attribute.to_dict() - # override the default output from pydantic by calling `to_dict()` of bounded_filter - if self.bounded_filter: - _dict['boundedFilter'] = self.bounded_filter.to_dict() - # override the default output from pydantic by calling `to_dict()` of data_set - if self.data_set: - _dict['dataSet'] = self.data_set.to_dict() - # override the default output from pydantic by calling `to_dict()` of var_from - if self.var_from: - _dict['from'] = self.var_from.to_dict() - # override the default output from pydantic by calling `to_dict()` of to - if self.to: - _dict['to'] = self.to.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardDateFilterDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": IdentifierRef.from_dict(obj["attribute"]) if obj.get("attribute") is not None else None, - "boundedFilter": RelativeBoundedDateFilter.from_dict(obj["boundedFilter"]) if obj.get("boundedFilter") is not None else None, - "dataSet": IdentifierRef.from_dict(obj["dataSet"]) if obj.get("dataSet") is not None else None, - "emptyValueHandling": obj.get("emptyValueHandling"), - "from": AacDashboardFilterFrom.from_dict(obj["from"]) if obj.get("from") is not None else None, - "granularity": obj.get("granularity"), - "localIdentifier": obj.get("localIdentifier"), - "to": AacDashboardFilterFrom.from_dict(obj["to"]) if obj.get("to") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_export_settings.py b/gooddata-api-client/gooddata_api_client/models/dashboard_export_settings.py deleted file mode 100644 index ea4a0d7ce..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_export_settings.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class DashboardExportSettings(BaseModel): - """ - Additional settings. - """ # noqa: E501 - export_info: Optional[StrictBool] = Field(default=False, description="If true, the export will contain the information about the export – exported date, dashboard filters, etc.", alias="exportInfo") - merge_headers: Optional[StrictBool] = Field(default=False, description="Merge equal headers in neighbouring cells. Used for [XLSX] format only.", alias="mergeHeaders") - page_orientation: Optional[StrictStr] = Field(default='PORTRAIT', description="Set page orientation. (PDF)", alias="pageOrientation") - page_size: Optional[StrictStr] = Field(default='A4', description="Set page size. (PDF)", alias="pageSize") - __properties: ClassVar[List[str]] = ["exportInfo", "mergeHeaders", "pageOrientation", "pageSize"] - - @field_validator('page_orientation') - def page_orientation_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['PORTRAIT', 'LANDSCAPE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('PORTRAIT', 'LANDSCAPE')") - return value - - @field_validator('page_size') - def page_size_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['A3', 'A4', 'LETTER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('A3', 'A4', 'LETTER')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardExportSettings from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardExportSettings from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "exportInfo": obj.get("exportInfo") if obj.get("exportInfo") is not None else False, - "mergeHeaders": obj.get("mergeHeaders") if obj.get("mergeHeaders") is not None else False, - "pageOrientation": obj.get("pageOrientation") if obj.get("pageOrientation") is not None else 'PORTRAIT', - "pageSize": obj.get("pageSize") if obj.get("pageSize") is not None else 'A4' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_filter.py b/gooddata-api-client/gooddata_api_client/models/dashboard_filter.py deleted file mode 100644 index 5e389e32e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_filter.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.dashboard_attribute_filter import DashboardAttributeFilter -from gooddata_api_client.models.dashboard_date_filter import DashboardDateFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -DASHBOARDFILTER_ONE_OF_SCHEMAS = ["DashboardAttributeFilter", "DashboardDateFilter"] - -class DashboardFilter(BaseModel): - """ - DashboardFilter - """ - # data type: DashboardAttributeFilter - oneof_schema_1_validator: Optional[DashboardAttributeFilter] = None - # data type: DashboardDateFilter - oneof_schema_2_validator: Optional[DashboardDateFilter] = None - actual_instance: Optional[Union[DashboardAttributeFilter, DashboardDateFilter]] = None - one_of_schemas: Set[str] = { "DashboardAttributeFilter", "DashboardDateFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = DashboardFilter.model_construct() - error_messages = [] - match = 0 - # validate data type: DashboardAttributeFilter - if not isinstance(v, DashboardAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `DashboardAttributeFilter`") - else: - match += 1 - # validate data type: DashboardDateFilter - if not isinstance(v, DashboardDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `DashboardDateFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in DashboardFilter with oneOf schemas: DashboardAttributeFilter, DashboardDateFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DashboardAttributeFilter - try: - if match == 0: - instance.actual_instance = DashboardAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into DashboardDateFilter - try: - if match == 0: - instance.actual_instance = DashboardDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into DashboardFilter with oneOf schemas: DashboardAttributeFilter, DashboardDateFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DashboardAttributeFilter, DashboardDateFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_permissions.py b/gooddata-api-client/gooddata_api_client/models/dashboard_permissions.py deleted file mode 100644 index 16f83f498..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_permissions.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.rule_permission import RulePermission -from gooddata_api_client.models.user_group_permission import UserGroupPermission -from gooddata_api_client.models.user_permission import UserPermission -from typing import Optional, Set -from typing_extensions import Self - -class DashboardPermissions(BaseModel): - """ - DashboardPermissions - """ # noqa: E501 - rules: List[RulePermission] = Field(description="List of rules") - user_groups: List[UserGroupPermission] = Field(description="List of user groups", alias="userGroups") - users: List[UserPermission] = Field(description="List of users") - __properties: ClassVar[List[str]] = ["rules", "userGroups", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardPermissions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in rules (list) - _items = [] - if self.rules: - for _item_rules in self.rules: - if _item_rules: - _items.append(_item_rules.to_dict()) - _dict['rules'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardPermissions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "rules": [RulePermission.from_dict(_item) for _item in obj["rules"]] if obj.get("rules") is not None else None, - "userGroups": [UserGroupPermission.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None, - "users": [UserPermission.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_permissions_assignment.py b/gooddata-api-client/gooddata_api_client/models/dashboard_permissions_assignment.py deleted file mode 100644 index 6c68721b1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_permissions_assignment.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DashboardPermissionsAssignment(BaseModel): - """ - Desired levels of permissions for an assignee. - """ # noqa: E501 - permissions: List[StrictStr] - __properties: ClassVar[List[str]] = ["permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['EDIT', 'SHARE', 'VIEW']): - raise ValueError("each list item must be one of ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardPermissionsAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardPermissionsAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_slides_template.py b/gooddata-api-client/gooddata_api_client/models/dashboard_slides_template.py deleted file mode 100644 index c1715eb08..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_slides_template.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.content_slide_template import ContentSlideTemplate -from gooddata_api_client.models.cover_slide_template import CoverSlideTemplate -from gooddata_api_client.models.intro_slide_template import IntroSlideTemplate -from gooddata_api_client.models.section_slide_template import SectionSlideTemplate -from typing import Optional, Set -from typing_extensions import Self - -class DashboardSlidesTemplate(BaseModel): - """ - Template for dashboard slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} - """ # noqa: E501 - applied_on: Annotated[List[StrictStr], Field(min_length=1)] = Field(description="Export types this template applies to.", alias="appliedOn") - content_slide: Optional[ContentSlideTemplate] = Field(default=None, alias="contentSlide") - cover_slide: Optional[CoverSlideTemplate] = Field(default=None, alias="coverSlide") - intro_slide: Optional[IntroSlideTemplate] = Field(default=None, alias="introSlide") - section_slide: Optional[SectionSlideTemplate] = Field(default=None, alias="sectionSlide") - __properties: ClassVar[List[str]] = ["appliedOn", "contentSlide", "coverSlide", "introSlide", "sectionSlide"] - - @field_validator('applied_on') - def applied_on_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['PDF', 'PPTX']): - raise ValueError("each list item must be one of ('PDF', 'PPTX')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardSlidesTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content_slide - if self.content_slide: - _dict['contentSlide'] = self.content_slide.to_dict() - # override the default output from pydantic by calling `to_dict()` of cover_slide - if self.cover_slide: - _dict['coverSlide'] = self.cover_slide.to_dict() - # override the default output from pydantic by calling `to_dict()` of intro_slide - if self.intro_slide: - _dict['introSlide'] = self.intro_slide.to_dict() - # override the default output from pydantic by calling `to_dict()` of section_slide - if self.section_slide: - _dict['sectionSlide'] = self.section_slide.to_dict() - # set to None if content_slide (nullable) is None - # and model_fields_set contains the field - if self.content_slide is None and "content_slide" in self.model_fields_set: - _dict['contentSlide'] = None - - # set to None if cover_slide (nullable) is None - # and model_fields_set contains the field - if self.cover_slide is None and "cover_slide" in self.model_fields_set: - _dict['coverSlide'] = None - - # set to None if intro_slide (nullable) is None - # and model_fields_set contains the field - if self.intro_slide is None and "intro_slide" in self.model_fields_set: - _dict['introSlide'] = None - - # set to None if section_slide (nullable) is None - # and model_fields_set contains the field - if self.section_slide is None and "section_slide" in self.model_fields_set: - _dict['sectionSlide'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardSlidesTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "appliedOn": obj.get("appliedOn"), - "contentSlide": ContentSlideTemplate.from_dict(obj["contentSlide"]) if obj.get("contentSlide") is not None else None, - "coverSlide": CoverSlideTemplate.from_dict(obj["coverSlide"]) if obj.get("coverSlide") is not None else None, - "introSlide": IntroSlideTemplate.from_dict(obj["introSlide"]) if obj.get("introSlide") is not None else None, - "sectionSlide": SectionSlideTemplate.from_dict(obj["sectionSlide"]) if obj.get("sectionSlide") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request.py b/gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request.py deleted file mode 100644 index 635af8d3e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request.py +++ /dev/null @@ -1,135 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.dashboard_export_settings import DashboardExportSettings -from gooddata_api_client.models.dashboard_filter import DashboardFilter -from typing import Optional, Set -from typing_extensions import Self - -class DashboardTabularExportRequest(BaseModel): - """ - Export request object describing the export properties for dashboard tabular exports. - """ # noqa: E501 - dashboard_filters_override: Optional[List[DashboardFilter]] = Field(default=None, description="List of filters that will be used instead of the default dashboard filters.", alias="dashboardFiltersOverride") - dashboard_tabs_filters_overrides: Optional[Dict[str, List[DashboardFilter]]] = Field(default=None, description="Map of tab-specific filter overrides. Key is tabId, value is list of filters for that tab.", alias="dashboardTabsFiltersOverrides") - file_name: StrictStr = Field(description="Filename of downloaded file without extension.", alias="fileName") - format: StrictStr = Field(description="Requested tabular export type.") - settings: Optional[DashboardExportSettings] = None - widget_ids: Optional[Annotated[List[StrictStr], Field(max_length=1)]] = Field(default=None, description="List of widget identifiers to be exported. Note that only one widget is currently supported.", alias="widgetIds") - __properties: ClassVar[List[str]] = ["dashboardFiltersOverride", "dashboardTabsFiltersOverrides", "fileName", "format", "settings", "widgetIds"] - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['XLSX', 'PDF']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('XLSX', 'PDF')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardTabularExportRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_filters_override (list) - _items = [] - if self.dashboard_filters_override: - for _item_dashboard_filters_override in self.dashboard_filters_override: - if _item_dashboard_filters_override: - _items.append(_item_dashboard_filters_override.to_dict()) - _dict['dashboardFiltersOverride'] = _items - # override the default output from pydantic by calling `to_dict()` of each value in dashboard_tabs_filters_overrides (dict of array) - _field_dict_of_array = {} - if self.dashboard_tabs_filters_overrides: - for _key_dashboard_tabs_filters_overrides in self.dashboard_tabs_filters_overrides: - if self.dashboard_tabs_filters_overrides[_key_dashboard_tabs_filters_overrides] is not None: - _field_dict_of_array[_key_dashboard_tabs_filters_overrides] = [ - _item.to_dict() for _item in self.dashboard_tabs_filters_overrides[_key_dashboard_tabs_filters_overrides] - ] - _dict['dashboardTabsFiltersOverrides'] = _field_dict_of_array - # override the default output from pydantic by calling `to_dict()` of settings - if self.settings: - _dict['settings'] = self.settings.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardTabularExportRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardFiltersOverride": [DashboardFilter.from_dict(_item) for _item in obj["dashboardFiltersOverride"]] if obj.get("dashboardFiltersOverride") is not None else None, - "dashboardTabsFiltersOverrides": dict( - (_k, - [DashboardFilter.from_dict(_item) for _item in _v] - if _v is not None - else None - ) - for _k, _v in obj.get("dashboardTabsFiltersOverrides", {}).items() - ), - "fileName": obj.get("fileName"), - "format": obj.get("format"), - "settings": DashboardExportSettings.from_dict(obj["settings"]) if obj.get("settings") is not None else None, - "widgetIds": obj.get("widgetIds") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request_v2.py b/gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request_v2.py deleted file mode 100644 index 5b5ed08ea..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dashboard_tabular_export_request_v2.py +++ /dev/null @@ -1,137 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.dashboard_export_settings import DashboardExportSettings -from gooddata_api_client.models.dashboard_filter import DashboardFilter -from typing import Optional, Set -from typing_extensions import Self - -class DashboardTabularExportRequestV2(BaseModel): - """ - Export request object describing the export properties for dashboard tabular exports (v2 with dashboardId). - """ # noqa: E501 - dashboard_filters_override: Optional[List[DashboardFilter]] = Field(default=None, description="List of filters that will be used instead of the default dashboard filters.", alias="dashboardFiltersOverride") - dashboard_id: StrictStr = Field(description="Dashboard identifier", alias="dashboardId") - dashboard_tabs_filters_overrides: Optional[Dict[str, List[DashboardFilter]]] = Field(default=None, description="Map of tab-specific filter overrides. Key is tabId, value is list of filters for that tab.", alias="dashboardTabsFiltersOverrides") - file_name: StrictStr = Field(description="Filename of downloaded file without extension.", alias="fileName") - format: StrictStr = Field(description="Requested tabular export type.") - settings: Optional[DashboardExportSettings] = None - widget_ids: Optional[Annotated[List[StrictStr], Field(max_length=1)]] = Field(default=None, description="List of widget identifiers to be exported. Note that only one widget is currently supported.", alias="widgetIds") - __properties: ClassVar[List[str]] = ["dashboardFiltersOverride", "dashboardId", "dashboardTabsFiltersOverrides", "fileName", "format", "settings", "widgetIds"] - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['XLSX', 'PDF']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('XLSX', 'PDF')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DashboardTabularExportRequestV2 from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_filters_override (list) - _items = [] - if self.dashboard_filters_override: - for _item_dashboard_filters_override in self.dashboard_filters_override: - if _item_dashboard_filters_override: - _items.append(_item_dashboard_filters_override.to_dict()) - _dict['dashboardFiltersOverride'] = _items - # override the default output from pydantic by calling `to_dict()` of each value in dashboard_tabs_filters_overrides (dict of array) - _field_dict_of_array = {} - if self.dashboard_tabs_filters_overrides: - for _key_dashboard_tabs_filters_overrides in self.dashboard_tabs_filters_overrides: - if self.dashboard_tabs_filters_overrides[_key_dashboard_tabs_filters_overrides] is not None: - _field_dict_of_array[_key_dashboard_tabs_filters_overrides] = [ - _item.to_dict() for _item in self.dashboard_tabs_filters_overrides[_key_dashboard_tabs_filters_overrides] - ] - _dict['dashboardTabsFiltersOverrides'] = _field_dict_of_array - # override the default output from pydantic by calling `to_dict()` of settings - if self.settings: - _dict['settings'] = self.settings.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DashboardTabularExportRequestV2 from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardFiltersOverride": [DashboardFilter.from_dict(_item) for _item in obj["dashboardFiltersOverride"]] if obj.get("dashboardFiltersOverride") is not None else None, - "dashboardId": obj.get("dashboardId"), - "dashboardTabsFiltersOverrides": dict( - (_k, - [DashboardFilter.from_dict(_item) for _item in _v] - if _v is not None - else None - ) - for _k, _v in obj.get("dashboardTabsFiltersOverrides", {}).items() - ), - "fileName": obj.get("fileName"), - "format": obj.get("format"), - "settings": DashboardExportSettings.from_dict(obj["settings"]) if obj.get("settings") is not None else None, - "widgetIds": obj.get("widgetIds") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/data_column_locator.py b/gooddata-api-client/gooddata_api_client/models/data_column_locator.py deleted file mode 100644 index a8cc5ac32..000000000 --- a/gooddata-api-client/gooddata_api_client/models/data_column_locator.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DataColumnLocator(BaseModel): - """ - Mapping from dimension items (either 'localIdentifier' from 'AttributeItem', or \"measureGroup\") to their respective values. This effectively specifies the path (location) of the data column used for sorting. Therefore values for all dimension items must be specified. - """ # noqa: E501 - properties: Dict[str, StrictStr] = Field(description="Mapping from dimension items (either 'localIdentifier' from 'AttributeItem', or \"measureGroup\") to their respective values. This effectively specifies the path (location) of the data column used for sorting. Therefore values for all dimension items must be specified.") - __properties: ClassVar[List[str]] = ["properties"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DataColumnLocator from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DataColumnLocator from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "properties": obj.get("properties") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/data_column_locators.py b/gooddata-api-client/gooddata_api_client/models/data_column_locators.py deleted file mode 100644 index 76d186737..000000000 --- a/gooddata-api-client/gooddata_api_client/models/data_column_locators.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.data_column_locator import DataColumnLocator -from typing import Optional, Set -from typing_extensions import Self - -class DataColumnLocators(BaseModel): - """ - Data column locators for the values. - """ # noqa: E501 - properties: Optional[Dict[str, DataColumnLocator]] = Field(default=None, description="Mapping from dimensions to data column locators.") - __properties: ClassVar[List[str]] = ["properties"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DataColumnLocators from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in properties (dict) - _field_dict = {} - if self.properties: - for _key_properties in self.properties: - if self.properties[_key_properties]: - _field_dict[_key_properties] = self.properties[_key_properties].to_dict() - _dict['properties'] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DataColumnLocators from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "properties": dict( - (_k, DataColumnLocator.from_dict(_v)) - for _k, _v in obj["properties"].items() - ) - if obj.get("properties") is not None - else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/data_source_parameter.py b/gooddata-api-client/gooddata_api_client/models/data_source_parameter.py deleted file mode 100644 index 3d52af1ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/data_source_parameter.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DataSourceParameter(BaseModel): - """ - A parameter for testing data source connection - """ # noqa: E501 - name: StrictStr = Field(description="Parameter name.") - value: StrictStr = Field(description="Parameter value.") - __properties: ClassVar[List[str]] = ["name", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DataSourceParameter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DataSourceParameter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/data_source_permission_assignment.py b/gooddata-api-client/gooddata_api_client/models/data_source_permission_assignment.py deleted file mode 100644 index da10bab46..000000000 --- a/gooddata-api-client/gooddata_api_client/models/data_source_permission_assignment.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DataSourcePermissionAssignment(BaseModel): - """ - Data source permission assignments - """ # noqa: E501 - assignee_identifier: AssigneeIdentifier = Field(alias="assigneeIdentifier") - permissions: List[StrictStr] - __properties: ClassVar[List[str]] = ["assigneeIdentifier", "permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['MANAGE', 'USE']): - raise ValueError("each list item must be one of ('MANAGE', 'USE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DataSourcePermissionAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee_identifier - if self.assignee_identifier: - _dict['assigneeIdentifier'] = self.assignee_identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DataSourcePermissionAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assigneeIdentifier": AssigneeIdentifier.from_dict(obj["assigneeIdentifier"]) if obj.get("assigneeIdentifier") is not None else None, - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/data_source_schemata.py b/gooddata-api-client/gooddata_api_client/models/data_source_schemata.py deleted file mode 100644 index 1f731d682..000000000 --- a/gooddata-api-client/gooddata_api_client/models/data_source_schemata.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DataSourceSchemata(BaseModel): - """ - Result of getSchemata. Contains list of available DB schema names. - """ # noqa: E501 - schema_names: List[StrictStr] = Field(alias="schemaNames") - __properties: ClassVar[List[str]] = ["schemaNames"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DataSourceSchemata from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DataSourceSchemata from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "schemaNames": obj.get("schemaNames") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/data_source_table_identifier.py b/gooddata-api-client/gooddata_api_client/models/data_source_table_identifier.py deleted file mode 100644 index 53145cc7e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/data_source_table_identifier.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DataSourceTableIdentifier(BaseModel): - """ - An id of the table. Including ID of data source. - """ # noqa: E501 - data_source_id: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Data source ID.", alias="dataSourceId") - id: Annotated[str, Field(strict=True)] = Field(description="ID of table.") - path: Optional[List[StrictStr]] = Field(default=None, description="Path to table.") - type: StrictStr = Field(description="Data source entity type.") - __properties: ClassVar[List[str]] = ["dataSourceId", "id", "path", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSource']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSource')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DataSourceTableIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if path (nullable) is None - # and model_fields_set contains the field - if self.path is None and "path" in self.model_fields_set: - _dict['path'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DataSourceTableIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSourceId": obj.get("dataSourceId"), - "id": obj.get("id"), - "path": obj.get("path"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/database_instance.py b/gooddata-api-client/gooddata_api_client/models/database_instance.py deleted file mode 100644 index c56043ebe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/database_instance.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DatabaseInstance(BaseModel): - """ - A single AI Lake Database instance - """ # noqa: E501 - id: StrictStr = Field(description="Id of the AI Lake Database instance") - name: StrictStr = Field(description="Name of the AI Lake Database instance") - storage_ids: List[StrictStr] = Field(description="Set of ids of the storage instances this database instance should access.", alias="storageIds") - __properties: ClassVar[List[str]] = ["id", "name", "storageIds"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DatabaseInstance from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DatabaseInstance from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name"), - "storageIds": obj.get("storageIds") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dataset_grain.py b/gooddata-api-client/gooddata_api_client/models/dataset_grain.py deleted file mode 100644 index f3d29802a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dataset_grain.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DatasetGrain(BaseModel): - """ - DatasetGrain - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute', 'date']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute', 'date')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DatasetGrain from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DatasetGrain from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dataset_reference_identifier.py b/gooddata-api-client/gooddata_api_client/models/dataset_reference_identifier.py deleted file mode 100644 index b3ab83ae0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dataset_reference_identifier.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DatasetReferenceIdentifier(BaseModel): - """ - DatasetReferenceIdentifier - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DatasetReferenceIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DatasetReferenceIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dataset_workspace_data_filter_identifier.py b/gooddata-api-client/gooddata_api_client/models/dataset_workspace_data_filter_identifier.py deleted file mode 100644 index c99f50586..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dataset_workspace_data_filter_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DatasetWorkspaceDataFilterIdentifier(BaseModel): - """ - Identifier of a workspace data filter. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Workspace Data Filters ID.") - type: StrictStr = Field(description="Filter type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DatasetWorkspaceDataFilterIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DatasetWorkspaceDataFilterIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/date_absolute_filter.py b/gooddata-api-client/gooddata_api_client/models/date_absolute_filter.py deleted file mode 100644 index 64a6a31c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/date_absolute_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DateAbsoluteFilter(BaseModel): - """ - DateAbsoluteFilter - """ # noqa: E501 - var_from: StrictStr = Field(alias="from") - to: StrictStr - using: StrictStr - __properties: ClassVar[List[str]] = ["from", "to", "using"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DateAbsoluteFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DateAbsoluteFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "from": obj.get("from"), - "to": obj.get("to"), - "using": obj.get("using") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/date_filter.py b/gooddata-api-client/gooddata_api_client/models/date_filter.py deleted file mode 100644 index 12e8244ed..000000000 --- a/gooddata-api-client/gooddata_api_client/models/date_filter.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.absolute_date_filter import AbsoluteDateFilter -from gooddata_api_client.models.all_time_date_filter import AllTimeDateFilter -from gooddata_api_client.models.relative_date_filter import RelativeDateFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -DATEFILTER_ONE_OF_SCHEMAS = ["AbsoluteDateFilter", "AllTimeDateFilter", "RelativeDateFilter"] - -class DateFilter(BaseModel): - """ - Abstract filter definition type for dates. - """ - # data type: AbsoluteDateFilter - oneof_schema_1_validator: Optional[AbsoluteDateFilter] = None - # data type: RelativeDateFilter - oneof_schema_2_validator: Optional[RelativeDateFilter] = None - # data type: AllTimeDateFilter - oneof_schema_3_validator: Optional[AllTimeDateFilter] = None - actual_instance: Optional[Union[AbsoluteDateFilter, AllTimeDateFilter, RelativeDateFilter]] = None - one_of_schemas: Set[str] = { "AbsoluteDateFilter", "AllTimeDateFilter", "RelativeDateFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = DateFilter.model_construct() - error_messages = [] - match = 0 - # validate data type: AbsoluteDateFilter - if not isinstance(v, AbsoluteDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AbsoluteDateFilter`") - else: - match += 1 - # validate data type: RelativeDateFilter - if not isinstance(v, RelativeDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RelativeDateFilter`") - else: - match += 1 - # validate data type: AllTimeDateFilter - if not isinstance(v, AllTimeDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AllTimeDateFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in DateFilter with oneOf schemas: AbsoluteDateFilter, AllTimeDateFilter, RelativeDateFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AbsoluteDateFilter - try: - if match == 0: - instance.actual_instance = AbsoluteDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RelativeDateFilter - try: - if match == 0: - instance.actual_instance = RelativeDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AllTimeDateFilter - try: - if match == 0: - instance.actual_instance = AllTimeDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into DateFilter with oneOf schemas: AbsoluteDateFilter, AllTimeDateFilter, RelativeDateFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AbsoluteDateFilter, AllTimeDateFilter, RelativeDateFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/date_relative_filter.py b/gooddata-api-client/gooddata_api_client/models/date_relative_filter.py deleted file mode 100644 index 2a2913d4e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/date_relative_filter.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DateRelativeFilter(BaseModel): - """ - DateRelativeFilter - """ # noqa: E501 - var_from: StrictInt = Field(alias="from") - granularity: StrictStr - to: StrictInt - using: StrictStr - __properties: ClassVar[List[str]] = ["from", "granularity", "to", "using"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DateRelativeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DateRelativeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "from": obj.get("from"), - "granularity": obj.get("granularity"), - "to": obj.get("to"), - "using": obj.get("using") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/date_value.py b/gooddata-api-client/gooddata_api_client/models/date_value.py deleted file mode 100644 index 8656a04dc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/date_value.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DateValue(BaseModel): - """ - DateValue - """ # noqa: E501 - value: StrictStr - __properties: ClassVar[List[str]] = ["value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DateValue from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DateValue from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_aggregated_fact.py b/gooddata-api-client/gooddata_api_client/models/declarative_aggregated_fact.py deleted file mode 100644 index 826e87249..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_aggregated_fact.py +++ /dev/null @@ -1,125 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_source_fact_reference import DeclarativeSourceFactReference -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAggregatedFact(BaseModel): - """ - A dataset fact. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Fact description.") - id: Annotated[str, Field(strict=True)] = Field(description="Fact ID.") - is_nullable: Optional[StrictBool] = Field(default=None, description="Flag indicating whether the associated source column allows null values.", alias="isNullable") - null_value: Optional[StrictStr] = Field(default=None, description="Value used in coalesce during joins instead of null.", alias="nullValue") - source_column: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A name of the source column in the table.", alias="sourceColumn") - source_column_data_type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="A type of the source column", alias="sourceColumnDataType") - source_fact_reference: DeclarativeSourceFactReference = Field(alias="sourceFactReference") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - __properties: ClassVar[List[str]] = ["description", "id", "isNullable", "nullValue", "sourceColumn", "sourceColumnDataType", "sourceFactReference", "tags"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAggregatedFact from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of source_fact_reference - if self.source_fact_reference: - _dict['sourceFactReference'] = self.source_fact_reference.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAggregatedFact from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "id": obj.get("id"), - "isNullable": obj.get("isNullable"), - "nullValue": obj.get("nullValue"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "sourceFactReference": DeclarativeSourceFactReference.from_dict(obj["sourceFactReference"]) if obj.get("sourceFactReference") is not None else None, - "tags": obj.get("tags") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard.py deleted file mode 100644 index 5acd0d38c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard.py +++ /dev/null @@ -1,214 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_analytical_dashboard_permissions_inner import DeclarativeAnalyticalDashboardPermissionsInner -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticalDashboard(BaseModel): - """ - DeclarativeAnalyticalDashboard - """ # noqa: E501 - certification: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - certification_message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.", alias="certificationMessage") - certified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time when the certification was set.", alias="certifiedAt") - certified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="certifiedBy") - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Analytical dashboard description.") - id: Annotated[str, Field(strict=True)] = Field(description="Analytical dashboard ID.") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - permissions: Optional[List[DeclarativeAnalyticalDashboardPermissionsInner]] = Field(default=None, description="A list of permissions.") - summary: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="AI-generated summary of the dashboard content") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Analytical dashboard title.") - __properties: ClassVar[List[str]] = ["certification", "certificationMessage", "certifiedAt", "certifiedBy", "content", "createdAt", "createdBy", "description", "id", "modifiedAt", "modifiedBy", "permissions", "summary", "tags", "title"] - - @field_validator('certification') - def certification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('certified_at') - def certified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboard from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of certified_by - if self.certified_by: - _dict['certifiedBy'] = self.certified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - # set to None if certification_message (nullable) is None - # and model_fields_set contains the field - if self.certification_message is None and "certification_message" in self.model_fields_set: - _dict['certificationMessage'] = None - - # set to None if certified_at (nullable) is None - # and model_fields_set contains the field - if self.certified_at is None and "certified_at" in self.model_fields_set: - _dict['certifiedAt'] = None - - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboard from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "certification": obj.get("certification"), - "certificationMessage": obj.get("certificationMessage"), - "certifiedAt": obj.get("certifiedAt"), - "certifiedBy": DeclarativeUserIdentifier.from_dict(obj["certifiedBy"]) if obj.get("certifiedBy") is not None else None, - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "permissions": [DeclarativeAnalyticalDashboardPermissionsInner.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, - "summary": obj.get("summary"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_extension.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_extension.py deleted file mode 100644 index f72296f59..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_extension.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_analytical_dashboard_permissions_inner import DeclarativeAnalyticalDashboardPermissionsInner -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticalDashboardExtension(BaseModel): - """ - DeclarativeAnalyticalDashboardExtension - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Analytical dashboard ID.") - permissions: List[DeclarativeAnalyticalDashboardPermissionsInner] = Field(description="A list of permissions.") - __properties: ClassVar[List[str]] = ["id", "permissions"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardExtension from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardExtension from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "permissions": [DeclarativeAnalyticalDashboardPermissionsInner.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_identifier.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_identifier.py deleted file mode 100644 index 20c544345..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticalDashboardIdentifier(BaseModel): - """ - An analytical dashboard identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of the analytical dashboard.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_assignment.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_assignment.py deleted file mode 100644 index df3d0b48d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_assignment.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticalDashboardPermissionAssignment(BaseModel): - """ - Analytical dashboard permission. - """ # noqa: E501 - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['EDIT', 'SHARE', 'VIEW']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardPermissionAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardPermissionAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee.py deleted file mode 100644 index 69ed80eb9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticalDashboardPermissionForAssignee(BaseModel): - """ - Analytical dashboard permission for an assignee. - """ # noqa: E501 - name: StrictStr = Field(description="Permission name.") - assignee: AssigneeIdentifier - __properties: ClassVar[List[str]] = ["name", "assignee"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['EDIT', 'SHARE', 'VIEW']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardPermissionForAssignee from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardPermissionForAssignee from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee_rule.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee_rule.py deleted file mode 100644 index a5e32fd22..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permission_for_assignee_rule.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_rule import AssigneeRule -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticalDashboardPermissionForAssigneeRule(BaseModel): - """ - Analytical dashboard permission for a collection of assignees identified by a rule. - """ # noqa: E501 - name: StrictStr = Field(description="Permission name.") - assignee_rule: AssigneeRule = Field(alias="assigneeRule") - __properties: ClassVar[List[str]] = ["name", "assigneeRule"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['EDIT', 'SHARE', 'VIEW']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardPermissionForAssigneeRule from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee_rule - if self.assignee_rule: - _dict['assigneeRule'] = self.assignee_rule.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticalDashboardPermissionForAssigneeRule from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "assigneeRule": AssigneeRule.from_dict(obj["assigneeRule"]) if obj.get("assigneeRule") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permissions_inner.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permissions_inner.py deleted file mode 100644 index 659d428d1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytical_dashboard_permissions_inner.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.declarative_analytical_dashboard_permission_for_assignee import DeclarativeAnalyticalDashboardPermissionForAssignee -from gooddata_api_client.models.declarative_analytical_dashboard_permission_for_assignee_rule import DeclarativeAnalyticalDashboardPermissionForAssigneeRule -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -DECLARATIVEANALYTICALDASHBOARDPERMISSIONSINNER_ONE_OF_SCHEMAS = ["DeclarativeAnalyticalDashboardPermissionForAssignee", "DeclarativeAnalyticalDashboardPermissionForAssigneeRule"] - -class DeclarativeAnalyticalDashboardPermissionsInner(BaseModel): - """ - DeclarativeAnalyticalDashboardPermissionsInner - """ - # data type: DeclarativeAnalyticalDashboardPermissionForAssignee - oneof_schema_1_validator: Optional[DeclarativeAnalyticalDashboardPermissionForAssignee] = None - # data type: DeclarativeAnalyticalDashboardPermissionForAssigneeRule - oneof_schema_2_validator: Optional[DeclarativeAnalyticalDashboardPermissionForAssigneeRule] = None - actual_instance: Optional[Union[DeclarativeAnalyticalDashboardPermissionForAssignee, DeclarativeAnalyticalDashboardPermissionForAssigneeRule]] = None - one_of_schemas: Set[str] = { "DeclarativeAnalyticalDashboardPermissionForAssignee", "DeclarativeAnalyticalDashboardPermissionForAssigneeRule" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = DeclarativeAnalyticalDashboardPermissionsInner.model_construct() - error_messages = [] - match = 0 - # validate data type: DeclarativeAnalyticalDashboardPermissionForAssignee - if not isinstance(v, DeclarativeAnalyticalDashboardPermissionForAssignee): - error_messages.append(f"Error! Input type `{type(v)}` is not `DeclarativeAnalyticalDashboardPermissionForAssignee`") - else: - match += 1 - # validate data type: DeclarativeAnalyticalDashboardPermissionForAssigneeRule - if not isinstance(v, DeclarativeAnalyticalDashboardPermissionForAssigneeRule): - error_messages.append(f"Error! Input type `{type(v)}` is not `DeclarativeAnalyticalDashboardPermissionForAssigneeRule`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in DeclarativeAnalyticalDashboardPermissionsInner with oneOf schemas: DeclarativeAnalyticalDashboardPermissionForAssignee, DeclarativeAnalyticalDashboardPermissionForAssigneeRule. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DeclarativeAnalyticalDashboardPermissionForAssignee - try: - if match == 0: - instance.actual_instance = DeclarativeAnalyticalDashboardPermissionForAssignee.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into DeclarativeAnalyticalDashboardPermissionForAssigneeRule - try: - if match == 0: - instance.actual_instance = DeclarativeAnalyticalDashboardPermissionForAssigneeRule.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into DeclarativeAnalyticalDashboardPermissionsInner with oneOf schemas: DeclarativeAnalyticalDashboardPermissionForAssignee, DeclarativeAnalyticalDashboardPermissionForAssigneeRule. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DeclarativeAnalyticalDashboardPermissionForAssignee, DeclarativeAnalyticalDashboardPermissionForAssigneeRule]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytics.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytics.py deleted file mode 100644 index 52cc9cae5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytics.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_analytics_layer import DeclarativeAnalyticsLayer -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalytics(BaseModel): - """ - Entities describing users' view on data. - """ # noqa: E501 - analytics: Optional[DeclarativeAnalyticsLayer] = None - __properties: ClassVar[List[str]] = ["analytics"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalytics from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytics - if self.analytics: - _dict['analytics'] = self.analytics.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalytics from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analytics": DeclarativeAnalyticsLayer.from_dict(obj["analytics"]) if obj.get("analytics") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_analytics_layer.py b/gooddata-api-client/gooddata_api_client/models/declarative_analytics_layer.py deleted file mode 100644 index 1bbe5ced2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_analytics_layer.py +++ /dev/null @@ -1,176 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_analytical_dashboard import DeclarativeAnalyticalDashboard -from gooddata_api_client.models.declarative_analytical_dashboard_extension import DeclarativeAnalyticalDashboardExtension -from gooddata_api_client.models.declarative_attribute_hierarchy import DeclarativeAttributeHierarchy -from gooddata_api_client.models.declarative_dashboard_plugin import DeclarativeDashboardPlugin -from gooddata_api_client.models.declarative_export_definition import DeclarativeExportDefinition -from gooddata_api_client.models.declarative_filter_context import DeclarativeFilterContext -from gooddata_api_client.models.declarative_memory_item import DeclarativeMemoryItem -from gooddata_api_client.models.declarative_metric import DeclarativeMetric -from gooddata_api_client.models.declarative_visualization_object import DeclarativeVisualizationObject -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAnalyticsLayer(BaseModel): - """ - DeclarativeAnalyticsLayer - """ # noqa: E501 - analytical_dashboard_extensions: Optional[List[DeclarativeAnalyticalDashboardExtension]] = Field(default=None, description="A list of dashboard permissions assigned to a related dashboard.", alias="analyticalDashboardExtensions") - analytical_dashboards: Optional[List[DeclarativeAnalyticalDashboard]] = Field(default=None, description="A list of analytical dashboards available in the model.", alias="analyticalDashboards") - attribute_hierarchies: Optional[List[DeclarativeAttributeHierarchy]] = Field(default=None, description="A list of attribute hierarchies.", alias="attributeHierarchies") - dashboard_plugins: Optional[List[DeclarativeDashboardPlugin]] = Field(default=None, description="A list of dashboard plugins available in the model.", alias="dashboardPlugins") - export_definitions: Optional[List[DeclarativeExportDefinition]] = Field(default=None, description="A list of export definitions.", alias="exportDefinitions") - filter_contexts: Optional[List[DeclarativeFilterContext]] = Field(default=None, description="A list of filter contexts available in the model.", alias="filterContexts") - memory_items: Optional[List[DeclarativeMemoryItem]] = Field(default=None, description="A list of AI memory items available in the workspace.", alias="memoryItems") - metrics: Optional[List[DeclarativeMetric]] = Field(default=None, description="A list of metrics available in the model.") - visualization_objects: Optional[List[DeclarativeVisualizationObject]] = Field(default=None, description="A list of visualization objects available in the model.", alias="visualizationObjects") - __properties: ClassVar[List[str]] = ["analyticalDashboardExtensions", "analyticalDashboards", "attributeHierarchies", "dashboardPlugins", "exportDefinitions", "filterContexts", "memoryItems", "metrics", "visualizationObjects"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticsLayer from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in analytical_dashboard_extensions (list) - _items = [] - if self.analytical_dashboard_extensions: - for _item_analytical_dashboard_extensions in self.analytical_dashboard_extensions: - if _item_analytical_dashboard_extensions: - _items.append(_item_analytical_dashboard_extensions.to_dict()) - _dict['analyticalDashboardExtensions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in analytical_dashboards (list) - _items = [] - if self.analytical_dashboards: - for _item_analytical_dashboards in self.analytical_dashboards: - if _item_analytical_dashboards: - _items.append(_item_analytical_dashboards.to_dict()) - _dict['analyticalDashboards'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in attribute_hierarchies (list) - _items = [] - if self.attribute_hierarchies: - for _item_attribute_hierarchies in self.attribute_hierarchies: - if _item_attribute_hierarchies: - _items.append(_item_attribute_hierarchies.to_dict()) - _dict['attributeHierarchies'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_plugins (list) - _items = [] - if self.dashboard_plugins: - for _item_dashboard_plugins in self.dashboard_plugins: - if _item_dashboard_plugins: - _items.append(_item_dashboard_plugins.to_dict()) - _dict['dashboardPlugins'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in export_definitions (list) - _items = [] - if self.export_definitions: - for _item_export_definitions in self.export_definitions: - if _item_export_definitions: - _items.append(_item_export_definitions.to_dict()) - _dict['exportDefinitions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filter_contexts (list) - _items = [] - if self.filter_contexts: - for _item_filter_contexts in self.filter_contexts: - if _item_filter_contexts: - _items.append(_item_filter_contexts.to_dict()) - _dict['filterContexts'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in memory_items (list) - _items = [] - if self.memory_items: - for _item_memory_items in self.memory_items: - if _item_memory_items: - _items.append(_item_memory_items.to_dict()) - _dict['memoryItems'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in metrics (list) - _items = [] - if self.metrics: - for _item_metrics in self.metrics: - if _item_metrics: - _items.append(_item_metrics.to_dict()) - _dict['metrics'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visualization_objects (list) - _items = [] - if self.visualization_objects: - for _item_visualization_objects in self.visualization_objects: - if _item_visualization_objects: - _items.append(_item_visualization_objects.to_dict()) - _dict['visualizationObjects'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAnalyticsLayer from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboardExtensions": [DeclarativeAnalyticalDashboardExtension.from_dict(_item) for _item in obj["analyticalDashboardExtensions"]] if obj.get("analyticalDashboardExtensions") is not None else None, - "analyticalDashboards": [DeclarativeAnalyticalDashboard.from_dict(_item) for _item in obj["analyticalDashboards"]] if obj.get("analyticalDashboards") is not None else None, - "attributeHierarchies": [DeclarativeAttributeHierarchy.from_dict(_item) for _item in obj["attributeHierarchies"]] if obj.get("attributeHierarchies") is not None else None, - "dashboardPlugins": [DeclarativeDashboardPlugin.from_dict(_item) for _item in obj["dashboardPlugins"]] if obj.get("dashboardPlugins") is not None else None, - "exportDefinitions": [DeclarativeExportDefinition.from_dict(_item) for _item in obj["exportDefinitions"]] if obj.get("exportDefinitions") is not None else None, - "filterContexts": [DeclarativeFilterContext.from_dict(_item) for _item in obj["filterContexts"]] if obj.get("filterContexts") is not None else None, - "memoryItems": [DeclarativeMemoryItem.from_dict(_item) for _item in obj["memoryItems"]] if obj.get("memoryItems") is not None else None, - "metrics": [DeclarativeMetric.from_dict(_item) for _item in obj["metrics"]] if obj.get("metrics") is not None else None, - "visualizationObjects": [DeclarativeVisualizationObject.from_dict(_item) for _item in obj["visualizationObjects"]] if obj.get("visualizationObjects") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_attribute.py b/gooddata-api-client/gooddata_api_client/models/declarative_attribute.py deleted file mode 100644 index 908621d64..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_attribute.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_label import DeclarativeLabel -from gooddata_api_client.models.label_identifier import LabelIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAttribute(BaseModel): - """ - A dataset attribute. - """ # noqa: E501 - default_view: Optional[LabelIdentifier] = Field(default=None, alias="defaultView") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Attribute description.") - id: Annotated[str, Field(strict=True)] = Field(description="Attribute ID.") - is_hidden: Optional[StrictBool] = Field(default=None, description="If true, this attribute is hidden from AI search results.", alias="isHidden") - is_nullable: Optional[StrictBool] = Field(default=None, description="Flag indicating whether the associated source column allows null values.", alias="isNullable") - labels: List[DeclarativeLabel] = Field(description="An array of attribute labels.") - locale: Optional[StrictStr] = Field(default=None, description="Default locale for primary label.") - null_value: Optional[StrictStr] = Field(default=None, description="Value used in coalesce during joins instead of null.", alias="nullValue") - sort_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Attribute sort column.", alias="sortColumn") - sort_direction: Optional[StrictStr] = Field(default=None, description="Attribute sort direction.", alias="sortDirection") - source_column: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A name of the source column that is the primary label", alias="sourceColumn") - source_column_data_type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="A type of the source column", alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Attribute title.") - __properties: ClassVar[List[str]] = ["defaultView", "description", "id", "isHidden", "isNullable", "labels", "locale", "nullValue", "sortColumn", "sortDirection", "sourceColumn", "sourceColumnDataType", "tags", "title"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('sort_direction') - def sort_direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAttribute from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of default_view - if self.default_view: - _dict['defaultView'] = self.default_view.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in labels (list) - _items = [] - if self.labels: - for _item_labels in self.labels: - if _item_labels: - _items.append(_item_labels.to_dict()) - _dict['labels'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAttribute from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "defaultView": LabelIdentifier.from_dict(obj["defaultView"]) if obj.get("defaultView") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "isHidden": obj.get("isHidden"), - "isNullable": obj.get("isNullable"), - "labels": [DeclarativeLabel.from_dict(_item) for _item in obj["labels"]] if obj.get("labels") is not None else None, - "locale": obj.get("locale"), - "nullValue": obj.get("nullValue"), - "sortColumn": obj.get("sortColumn"), - "sortDirection": obj.get("sortDirection"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_attribute_hierarchy.py b/gooddata-api-client/gooddata_api_client/models/declarative_attribute_hierarchy.py deleted file mode 100644 index 016ca7772..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_attribute_hierarchy.py +++ /dev/null @@ -1,158 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAttributeHierarchy(BaseModel): - """ - DeclarativeAttributeHierarchy - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Attribute hierarchy object description.") - id: Annotated[str, Field(strict=True)] = Field(description="Attribute hierarchy object ID.") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Attribute hierarchy object title.") - __properties: ClassVar[List[str]] = ["content", "createdAt", "createdBy", "description", "id", "modifiedAt", "modifiedBy", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAttributeHierarchy from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAttributeHierarchy from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_automation.py b/gooddata-api-client/gooddata_api_client/models/declarative_automation.py deleted file mode 100644 index 1dec515bc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_automation.py +++ /dev/null @@ -1,303 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.automation_alert import AutomationAlert -from gooddata_api_client.models.automation_dashboard_tabular_export import AutomationDashboardTabularExport -from gooddata_api_client.models.automation_external_recipient import AutomationExternalRecipient -from gooddata_api_client.models.automation_image_export import AutomationImageExport -from gooddata_api_client.models.automation_metadata import AutomationMetadata -from gooddata_api_client.models.automation_raw_export import AutomationRawExport -from gooddata_api_client.models.automation_schedule import AutomationSchedule -from gooddata_api_client.models.automation_slides_export import AutomationSlidesExport -from gooddata_api_client.models.automation_tabular_export import AutomationTabularExport -from gooddata_api_client.models.automation_visual_export import AutomationVisualExport -from gooddata_api_client.models.declarative_analytical_dashboard_identifier import DeclarativeAnalyticalDashboardIdentifier -from gooddata_api_client.models.declarative_export_definition_identifier import DeclarativeExportDefinitionIdentifier -from gooddata_api_client.models.declarative_notification_channel_identifier import DeclarativeNotificationChannelIdentifier -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeAutomation(BaseModel): - """ - DeclarativeAutomation - """ # noqa: E501 - alert: Optional[AutomationAlert] = None - analytical_dashboard: Optional[DeclarativeAnalyticalDashboardIdentifier] = Field(default=None, alias="analyticalDashboard") - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - dashboard_tabular_exports: Optional[List[AutomationDashboardTabularExport]] = Field(default=None, alias="dashboardTabularExports") - description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - details: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=10000)]]] = Field(default=None, description="TODO") - evaluation_mode: Optional[StrictStr] = Field(default='PER_RECIPIENT', description="Specify automation evaluation mode.", alias="evaluationMode") - export_definitions: Optional[List[DeclarativeExportDefinitionIdentifier]] = Field(default=None, alias="exportDefinitions") - external_recipients: Optional[List[AutomationExternalRecipient]] = Field(default=None, description="External recipients of the automation action results.", alias="externalRecipients") - id: Annotated[str, Field(strict=True)] - image_exports: Optional[List[AutomationImageExport]] = Field(default=None, alias="imageExports") - metadata: Optional[AutomationMetadata] = None - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - notification_channel: Optional[DeclarativeNotificationChannelIdentifier] = Field(default=None, alias="notificationChannel") - raw_exports: Optional[List[AutomationRawExport]] = Field(default=None, alias="rawExports") - recipients: Optional[List[DeclarativeUserIdentifier]] = None - schedule: Optional[AutomationSchedule] = None - slides_exports: Optional[List[AutomationSlidesExport]] = Field(default=None, alias="slidesExports") - state: Optional[StrictStr] = Field(default='ACTIVE', description="Current state of the automation.") - tabular_exports: Optional[List[AutomationTabularExport]] = Field(default=None, alias="tabularExports") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - visual_exports: Optional[List[AutomationVisualExport]] = Field(default=None, alias="visualExports") - __properties: ClassVar[List[str]] = ["alert", "analyticalDashboard", "createdAt", "createdBy", "dashboardTabularExports", "description", "details", "evaluationMode", "exportDefinitions", "externalRecipients", "id", "imageExports", "metadata", "modifiedAt", "modifiedBy", "notificationChannel", "rawExports", "recipients", "schedule", "slidesExports", "state", "tabularExports", "tags", "title", "visualExports"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('evaluation_mode') - def evaluation_mode_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SHARED', 'PER_RECIPIENT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SHARED', 'PER_RECIPIENT')") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('state') - def state_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ACTIVE', 'PAUSED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ACTIVE', 'PAUSED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeAutomation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of alert - if self.alert: - _dict['alert'] = self.alert.to_dict() - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_tabular_exports (list) - _items = [] - if self.dashboard_tabular_exports: - for _item_dashboard_tabular_exports in self.dashboard_tabular_exports: - if _item_dashboard_tabular_exports: - _items.append(_item_dashboard_tabular_exports.to_dict()) - _dict['dashboardTabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in export_definitions (list) - _items = [] - if self.export_definitions: - for _item_export_definitions in self.export_definitions: - if _item_export_definitions: - _items.append(_item_export_definitions.to_dict()) - _dict['exportDefinitions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in external_recipients (list) - _items = [] - if self.external_recipients: - for _item_external_recipients in self.external_recipients: - if _item_external_recipients: - _items.append(_item_external_recipients.to_dict()) - _dict['externalRecipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in image_exports (list) - _items = [] - if self.image_exports: - for _item_image_exports in self.image_exports: - if _item_image_exports: - _items.append(_item_image_exports.to_dict()) - _dict['imageExports'] = _items - # override the default output from pydantic by calling `to_dict()` of metadata - if self.metadata: - _dict['metadata'] = self.metadata.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of notification_channel - if self.notification_channel: - _dict['notificationChannel'] = self.notification_channel.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in raw_exports (list) - _items = [] - if self.raw_exports: - for _item_raw_exports in self.raw_exports: - if _item_raw_exports: - _items.append(_item_raw_exports.to_dict()) - _dict['rawExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in recipients (list) - _items = [] - if self.recipients: - for _item_recipients in self.recipients: - if _item_recipients: - _items.append(_item_recipients.to_dict()) - _dict['recipients'] = _items - # override the default output from pydantic by calling `to_dict()` of schedule - if self.schedule: - _dict['schedule'] = self.schedule.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in slides_exports (list) - _items = [] - if self.slides_exports: - for _item_slides_exports in self.slides_exports: - if _item_slides_exports: - _items.append(_item_slides_exports.to_dict()) - _dict['slidesExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tabular_exports (list) - _items = [] - if self.tabular_exports: - for _item_tabular_exports in self.tabular_exports: - if _item_tabular_exports: - _items.append(_item_tabular_exports.to_dict()) - _dict['tabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visual_exports (list) - _items = [] - if self.visual_exports: - for _item_visual_exports in self.visual_exports: - if _item_visual_exports: - _items.append(_item_visual_exports.to_dict()) - _dict['visualExports'] = _items - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeAutomation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alert": AutomationAlert.from_dict(obj["alert"]) if obj.get("alert") is not None else None, - "analyticalDashboard": DeclarativeAnalyticalDashboardIdentifier.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "dashboardTabularExports": [AutomationDashboardTabularExport.from_dict(_item) for _item in obj["dashboardTabularExports"]] if obj.get("dashboardTabularExports") is not None else None, - "description": obj.get("description"), - "details": obj.get("details"), - "evaluationMode": obj.get("evaluationMode") if obj.get("evaluationMode") is not None else 'PER_RECIPIENT', - "exportDefinitions": [DeclarativeExportDefinitionIdentifier.from_dict(_item) for _item in obj["exportDefinitions"]] if obj.get("exportDefinitions") is not None else None, - "externalRecipients": [AutomationExternalRecipient.from_dict(_item) for _item in obj["externalRecipients"]] if obj.get("externalRecipients") is not None else None, - "id": obj.get("id"), - "imageExports": [AutomationImageExport.from_dict(_item) for _item in obj["imageExports"]] if obj.get("imageExports") is not None else None, - "metadata": AutomationMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "notificationChannel": DeclarativeNotificationChannelIdentifier.from_dict(obj["notificationChannel"]) if obj.get("notificationChannel") is not None else None, - "rawExports": [AutomationRawExport.from_dict(_item) for _item in obj["rawExports"]] if obj.get("rawExports") is not None else None, - "recipients": [DeclarativeUserIdentifier.from_dict(_item) for _item in obj["recipients"]] if obj.get("recipients") is not None else None, - "schedule": AutomationSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, - "slidesExports": [AutomationSlidesExport.from_dict(_item) for _item in obj["slidesExports"]] if obj.get("slidesExports") is not None else None, - "state": obj.get("state") if obj.get("state") is not None else 'ACTIVE', - "tabularExports": [AutomationTabularExport.from_dict(_item) for _item in obj["tabularExports"]] if obj.get("tabularExports") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "visualExports": [AutomationVisualExport.from_dict(_item) for _item in obj["visualExports"]] if obj.get("visualExports") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_color_palette.py b/gooddata-api-client/gooddata_api_client/models/declarative_color_palette.py deleted file mode 100644 index 8f3ae0bb2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_color_palette.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeColorPalette(BaseModel): - """ - Color palette and its properties. - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - id: StrictStr - name: Annotated[str, Field(strict=True, max_length=255)] - __properties: ClassVar[List[str]] = ["content", "id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeColorPalette from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeColorPalette from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_column.py b/gooddata-api-client/gooddata_api_client/models/declarative_column.py deleted file mode 100644 index a564b60e6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_column.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeColumn(BaseModel): - """ - A table column. - """ # noqa: E501 - data_type: StrictStr = Field(description="Column type", alias="dataType") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Column description/comment from database") - is_nullable: Optional[StrictBool] = Field(default=None, description="Column is nullable", alias="isNullable") - is_primary_key: Optional[StrictBool] = Field(default=None, description="Is column part of primary key?", alias="isPrimaryKey") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Column name") - referenced_table_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Referenced table (Foreign key)", alias="referencedTableColumn") - referenced_table_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Referenced table (Foreign key)", alias="referencedTableId") - __properties: ClassVar[List[str]] = ["dataType", "description", "isNullable", "isPrimaryKey", "name", "referencedTableColumn", "referencedTableId"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeColumn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeColumn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataType": obj.get("dataType"), - "description": obj.get("description"), - "isNullable": obj.get("isNullable"), - "isPrimaryKey": obj.get("isPrimaryKey"), - "name": obj.get("name"), - "referencedTableColumn": obj.get("referencedTableColumn"), - "referencedTableId": obj.get("referencedTableId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_csp_directive.py b/gooddata-api-client/gooddata_api_client/models/declarative_csp_directive.py deleted file mode 100644 index a75f635a8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_csp_directive.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeCspDirective(BaseModel): - """ - DeclarativeCspDirective - """ # noqa: E501 - directive: Annotated[str, Field(strict=True, max_length=255)] - sources: List[StrictStr] - __properties: ClassVar[List[str]] = ["directive", "sources"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeCspDirective from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeCspDirective from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "directive": obj.get("directive"), - "sources": obj.get("sources") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_custom_application_setting.py b/gooddata-api-client/gooddata_api_client/models/declarative_custom_application_setting.py deleted file mode 100644 index 204fbe9ed..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_custom_application_setting.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeCustomApplicationSetting(BaseModel): - """ - Custom application setting and its value. - """ # noqa: E501 - application_name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The application id", alias="applicationName") - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - id: Annotated[str, Field(strict=True)] = Field(description="Custom Application Setting ID.") - __properties: ClassVar[List[str]] = ["applicationName", "content", "id"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeCustomApplicationSetting from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeCustomApplicationSetting from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applicationName": obj.get("applicationName"), - "content": obj.get("content"), - "id": obj.get("id") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collection.py b/gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collection.py deleted file mode 100644 index b7ad34449..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collection.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeCustomGeoCollection(BaseModel): - """ - A declarative form of custom geo collection. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of the custom geo collection.") - id: Annotated[str, Field(strict=True)] = Field(description="Custom geo collection ID.") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of the custom geo collection.") - __properties: ClassVar[List[str]] = ["description", "id", "name"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeCustomGeoCollection from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeCustomGeoCollection from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collections.py b/gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collections.py deleted file mode 100644 index 14fddf52d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_custom_geo_collections.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_custom_geo_collection import DeclarativeCustomGeoCollection -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeCustomGeoCollections(BaseModel): - """ - Custom geo collections. - """ # noqa: E501 - custom_geo_collections: List[DeclarativeCustomGeoCollection] = Field(alias="customGeoCollections") - __properties: ClassVar[List[str]] = ["customGeoCollections"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeCustomGeoCollections from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in custom_geo_collections (list) - _items = [] - if self.custom_geo_collections: - for _item_custom_geo_collections in self.custom_geo_collections: - if _item_custom_geo_collections: - _items.append(_item_custom_geo_collections.to_dict()) - _dict['customGeoCollections'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeCustomGeoCollections from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customGeoCollections": [DeclarativeCustomGeoCollection.from_dict(_item) for _item in obj["customGeoCollections"]] if obj.get("customGeoCollections") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_dashboard_plugin.py b/gooddata-api-client/gooddata_api_client/models/declarative_dashboard_plugin.py deleted file mode 100644 index 191e92078..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_dashboard_plugin.py +++ /dev/null @@ -1,158 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDashboardPlugin(BaseModel): - """ - DeclarativeDashboardPlugin - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Dashboard plugin description.") - id: Annotated[str, Field(strict=True)] = Field(description="Dashboard plugin object ID.") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Dashboard plugin object title.") - __properties: ClassVar[List[str]] = ["content", "createdAt", "createdBy", "description", "id", "modifiedAt", "modifiedBy", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDashboardPlugin from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDashboardPlugin from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_data_source.py b/gooddata-api-client/gooddata_api_client/models/declarative_data_source.py deleted file mode 100644 index 689dff159..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_data_source.py +++ /dev/null @@ -1,213 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_data_source_permission import DeclarativeDataSourcePermission -from gooddata_api_client.models.parameter import Parameter -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDataSource(BaseModel): - """ - A data source and its properties. - """ # noqa: E501 - alternative_data_source_id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", alias="alternativeDataSourceId") - authentication_type: Optional[StrictStr] = Field(default=None, description="Type of authentication used to connect to the database.", alias="authenticationType") - cache_strategy: Optional[StrictStr] = Field(default=None, description="Determines how the results coming from a particular datasource should be cached. - ALWAYS: The results from the datasource should be cached normally (the default). - NEVER: The results from the datasource should never be cached.", alias="cacheStrategy") - client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Id of client with permission to connect to the data source.", alias="clientId") - client_secret: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The client secret to use to connect to the database providing the data for the data source.", alias="clientSecret") - decoded_parameters: Optional[List[Parameter]] = Field(default=None, alias="decodedParameters") - id: Annotated[str, Field(strict=True)] = Field(description="Data source ID.") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Name of the data source.") - parameters: Optional[List[Parameter]] = None - password: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Password for the data-source user, property is never returned back.") - permissions: Optional[List[DeclarativeDataSourcePermission]] = None - private_key: Optional[Annotated[str, Field(strict=True, max_length=15000)]] = Field(default=None, description="The private key to use to connect to the database providing the data for the data source.", alias="privateKey") - private_key_passphrase: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The passphrase used to encrypt the private key.", alias="privateKeyPassphrase") - var_schema: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A scheme/database with the data.", alias="schema") - token: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Token as an alternative to username and password.") - type: StrictStr = Field(description="Type of database.") - url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="An connection string relevant to type of database.") - username: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User with permission connect the data source/database.") - __properties: ClassVar[List[str]] = ["alternativeDataSourceId", "authenticationType", "cacheStrategy", "clientId", "clientSecret", "decodedParameters", "id", "name", "parameters", "password", "permissions", "privateKey", "privateKeyPassphrase", "schema", "token", "type", "url", "username"] - - @field_validator('alternative_data_source_id') - def alternative_data_source_id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('authentication_type') - def authentication_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['USERNAME_PASSWORD', 'TOKEN', 'KEY_PAIR', 'CLIENT_SECRET', 'ACCESS_TOKEN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('USERNAME_PASSWORD', 'TOKEN', 'KEY_PAIR', 'CLIENT_SECRET', 'ACCESS_TOKEN')") - return value - - @field_validator('cache_strategy') - def cache_strategy_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'NEVER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'NEVER')") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDataSource from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in decoded_parameters (list) - _items = [] - if self.decoded_parameters: - for _item_decoded_parameters in self.decoded_parameters: - if _item_decoded_parameters: - _items.append(_item_decoded_parameters.to_dict()) - _dict['decodedParameters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) - _items = [] - if self.parameters: - for _item_parameters in self.parameters: - if _item_parameters: - _items.append(_item_parameters.to_dict()) - _dict['parameters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - # set to None if alternative_data_source_id (nullable) is None - # and model_fields_set contains the field - if self.alternative_data_source_id is None and "alternative_data_source_id" in self.model_fields_set: - _dict['alternativeDataSourceId'] = None - - # set to None if authentication_type (nullable) is None - # and model_fields_set contains the field - if self.authentication_type is None and "authentication_type" in self.model_fields_set: - _dict['authenticationType'] = None - - # set to None if private_key (nullable) is None - # and model_fields_set contains the field - if self.private_key is None and "private_key" in self.model_fields_set: - _dict['privateKey'] = None - - # set to None if private_key_passphrase (nullable) is None - # and model_fields_set contains the field - if self.private_key_passphrase is None and "private_key_passphrase" in self.model_fields_set: - _dict['privateKeyPassphrase'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDataSource from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alternativeDataSourceId": obj.get("alternativeDataSourceId"), - "authenticationType": obj.get("authenticationType"), - "cacheStrategy": obj.get("cacheStrategy"), - "clientId": obj.get("clientId"), - "clientSecret": obj.get("clientSecret"), - "decodedParameters": [Parameter.from_dict(_item) for _item in obj["decodedParameters"]] if obj.get("decodedParameters") is not None else None, - "id": obj.get("id"), - "name": obj.get("name"), - "parameters": [Parameter.from_dict(_item) for _item in obj["parameters"]] if obj.get("parameters") is not None else None, - "password": obj.get("password"), - "permissions": [DeclarativeDataSourcePermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, - "privateKey": obj.get("privateKey"), - "privateKeyPassphrase": obj.get("privateKeyPassphrase"), - "schema": obj.get("schema"), - "token": obj.get("token"), - "type": obj.get("type"), - "url": obj.get("url"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_data_source_permission.py b/gooddata-api-client/gooddata_api_client/models/declarative_data_source_permission.py deleted file mode 100644 index ba9458fdc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_data_source_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDataSourcePermission(BaseModel): - """ - DeclarativeDataSourcePermission - """ # noqa: E501 - assignee: AssigneeIdentifier - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["assignee", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MANAGE', 'USE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGE', 'USE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDataSourcePermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDataSourcePermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None, - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_data_source_permissions.py b/gooddata-api-client/gooddata_api_client/models/declarative_data_source_permissions.py deleted file mode 100644 index 757fb626f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_data_source_permissions.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_data_source_permission import DeclarativeDataSourcePermission -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDataSourcePermissions(BaseModel): - """ - Data source permissions. - """ # noqa: E501 - permissions: Optional[List[DeclarativeDataSourcePermission]] = None - __properties: ClassVar[List[str]] = ["permissions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDataSourcePermissions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDataSourcePermissions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": [DeclarativeDataSourcePermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_data_sources.py b/gooddata-api-client/gooddata_api_client/models/declarative_data_sources.py deleted file mode 100644 index d3a147bba..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_data_sources.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_data_source import DeclarativeDataSource -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDataSources(BaseModel): - """ - A data source and its properties. - """ # noqa: E501 - data_sources: List[DeclarativeDataSource] = Field(alias="dataSources") - __properties: ClassVar[List[str]] = ["dataSources"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDataSources from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data_sources (list) - _items = [] - if self.data_sources: - for _item_data_sources in self.data_sources: - if _item_data_sources: - _items.append(_item_data_sources.to_dict()) - _dict['dataSources'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDataSources from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSources": [DeclarativeDataSource.from_dict(_item) for _item in obj["dataSources"]] if obj.get("dataSources") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_dataset.py b/gooddata-api-client/gooddata_api_client/models/declarative_dataset.py deleted file mode 100644 index 254d6bb3b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_dataset.py +++ /dev/null @@ -1,186 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.data_source_table_identifier import DataSourceTableIdentifier -from gooddata_api_client.models.declarative_aggregated_fact import DeclarativeAggregatedFact -from gooddata_api_client.models.declarative_attribute import DeclarativeAttribute -from gooddata_api_client.models.declarative_dataset_sql import DeclarativeDatasetSql -from gooddata_api_client.models.declarative_fact import DeclarativeFact -from gooddata_api_client.models.declarative_reference import DeclarativeReference -from gooddata_api_client.models.declarative_workspace_data_filter_column import DeclarativeWorkspaceDataFilterColumn -from gooddata_api_client.models.declarative_workspace_data_filter_references import DeclarativeWorkspaceDataFilterReferences -from gooddata_api_client.models.grain_identifier import GrainIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDataset(BaseModel): - """ - A dataset defined by its properties. - """ # noqa: E501 - aggregated_facts: Optional[List[DeclarativeAggregatedFact]] = Field(default=None, description="An array of aggregated facts.", alias="aggregatedFacts") - attributes: Optional[List[DeclarativeAttribute]] = Field(default=None, description="An array of attributes.") - data_source_table_id: Optional[DataSourceTableIdentifier] = Field(default=None, alias="dataSourceTableId") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="A dataset description.") - facts: Optional[List[DeclarativeFact]] = Field(default=None, description="An array of facts.") - grain: List[GrainIdentifier] = Field(description="An array of grain identifiers.") - id: Annotated[str, Field(strict=True)] = Field(description="The Dataset ID. This ID is further used to refer to this instance of dataset.") - precedence: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, description="Precedence used in aggregate awareness.") - references: List[DeclarativeReference] = Field(description="An array of references.") - sql: Optional[DeclarativeDatasetSql] = None - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A dataset title.") - workspace_data_filter_columns: Optional[List[DeclarativeWorkspaceDataFilterColumn]] = Field(default=None, description="An array of columns which are available for match to implicit workspace data filters.", alias="workspaceDataFilterColumns") - workspace_data_filter_references: Optional[List[DeclarativeWorkspaceDataFilterReferences]] = Field(default=None, description="An array of explicit workspace data filters.", alias="workspaceDataFilterReferences") - __properties: ClassVar[List[str]] = ["aggregatedFacts", "attributes", "dataSourceTableId", "description", "facts", "grain", "id", "precedence", "references", "sql", "tags", "title", "workspaceDataFilterColumns", "workspaceDataFilterReferences"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in aggregated_facts (list) - _items = [] - if self.aggregated_facts: - for _item_aggregated_facts in self.aggregated_facts: - if _item_aggregated_facts: - _items.append(_item_aggregated_facts.to_dict()) - _dict['aggregatedFacts'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - # override the default output from pydantic by calling `to_dict()` of data_source_table_id - if self.data_source_table_id: - _dict['dataSourceTableId'] = self.data_source_table_id.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in facts (list) - _items = [] - if self.facts: - for _item_facts in self.facts: - if _item_facts: - _items.append(_item_facts.to_dict()) - _dict['facts'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in grain (list) - _items = [] - if self.grain: - for _item_grain in self.grain: - if _item_grain: - _items.append(_item_grain.to_dict()) - _dict['grain'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in references (list) - _items = [] - if self.references: - for _item_references in self.references: - if _item_references: - _items.append(_item_references.to_dict()) - _dict['references'] = _items - # override the default output from pydantic by calling `to_dict()` of sql - if self.sql: - _dict['sql'] = self.sql.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filter_columns (list) - _items = [] - if self.workspace_data_filter_columns: - for _item_workspace_data_filter_columns in self.workspace_data_filter_columns: - if _item_workspace_data_filter_columns: - _items.append(_item_workspace_data_filter_columns.to_dict()) - _dict['workspaceDataFilterColumns'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filter_references (list) - _items = [] - if self.workspace_data_filter_references: - for _item_workspace_data_filter_references in self.workspace_data_filter_references: - if _item_workspace_data_filter_references: - _items.append(_item_workspace_data_filter_references.to_dict()) - _dict['workspaceDataFilterReferences'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "aggregatedFacts": [DeclarativeAggregatedFact.from_dict(_item) for _item in obj["aggregatedFacts"]] if obj.get("aggregatedFacts") is not None else None, - "attributes": [DeclarativeAttribute.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None, - "dataSourceTableId": DataSourceTableIdentifier.from_dict(obj["dataSourceTableId"]) if obj.get("dataSourceTableId") is not None else None, - "description": obj.get("description"), - "facts": [DeclarativeFact.from_dict(_item) for _item in obj["facts"]] if obj.get("facts") is not None else None, - "grain": [GrainIdentifier.from_dict(_item) for _item in obj["grain"]] if obj.get("grain") is not None else None, - "id": obj.get("id"), - "precedence": obj.get("precedence"), - "references": [DeclarativeReference.from_dict(_item) for _item in obj["references"]] if obj.get("references") is not None else None, - "sql": DeclarativeDatasetSql.from_dict(obj["sql"]) if obj.get("sql") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "workspaceDataFilterColumns": [DeclarativeWorkspaceDataFilterColumn.from_dict(_item) for _item in obj["workspaceDataFilterColumns"]] if obj.get("workspaceDataFilterColumns") is not None else None, - "workspaceDataFilterReferences": [DeclarativeWorkspaceDataFilterReferences.from_dict(_item) for _item in obj["workspaceDataFilterReferences"]] if obj.get("workspaceDataFilterReferences") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_dataset_extension.py b/gooddata-api-client/gooddata_api_client/models/declarative_dataset_extension.py deleted file mode 100644 index 62121aede..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_dataset_extension.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_workspace_data_filter_references import DeclarativeWorkspaceDataFilterReferences -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDatasetExtension(BaseModel): - """ - A dataset extension properties. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="The Dataset ID. This ID is further used to refer to this instance of dataset.") - workspace_data_filter_references: Optional[List[DeclarativeWorkspaceDataFilterReferences]] = Field(default=None, description="An array of explicit workspace data filters.", alias="workspaceDataFilterReferences") - __properties: ClassVar[List[str]] = ["id", "workspaceDataFilterReferences"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDatasetExtension from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filter_references (list) - _items = [] - if self.workspace_data_filter_references: - for _item_workspace_data_filter_references in self.workspace_data_filter_references: - if _item_workspace_data_filter_references: - _items.append(_item_workspace_data_filter_references.to_dict()) - _dict['workspaceDataFilterReferences'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDatasetExtension from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "workspaceDataFilterReferences": [DeclarativeWorkspaceDataFilterReferences.from_dict(_item) for _item in obj["workspaceDataFilterReferences"]] if obj.get("workspaceDataFilterReferences") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_dataset_sql.py b/gooddata-api-client/gooddata_api_client/models/declarative_dataset_sql.py deleted file mode 100644 index baf9c0df9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_dataset_sql.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDatasetSql(BaseModel): - """ - SQL defining this dataset. - """ # noqa: E501 - data_source_id: StrictStr = Field(description="Data source ID.", alias="dataSourceId") - statement: StrictStr = Field(description="SQL statement.") - __properties: ClassVar[List[str]] = ["dataSourceId", "statement"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDatasetSql from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDatasetSql from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSourceId": obj.get("dataSourceId"), - "statement": obj.get("statement") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_date_dataset.py b/gooddata-api-client/gooddata_api_client/models/declarative_date_dataset.py deleted file mode 100644 index 3dcba9536..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_date_dataset.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.granularities_formatting import GranularitiesFormatting -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeDateDataset(BaseModel): - """ - A date dataset. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Date dataset description.") - granularities: List[StrictStr] = Field(description="An array of date granularities. All listed granularities will be available for date dataset.") - granularities_formatting: GranularitiesFormatting = Field(alias="granularitiesFormatting") - id: Annotated[str, Field(strict=True)] = Field(description="Date dataset ID.") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Date dataset title.") - __properties: ClassVar[List[str]] = ["description", "granularities", "granularitiesFormatting", "id", "tags", "title"] - - @field_validator('granularities') - def granularities_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - raise ValueError("each list item must be one of ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeDateDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of granularities_formatting - if self.granularities_formatting: - _dict['granularitiesFormatting'] = self.granularities_formatting.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeDateDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "granularities": obj.get("granularities"), - "granularitiesFormatting": GranularitiesFormatting.from_dict(obj["granularitiesFormatting"]) if obj.get("granularitiesFormatting") is not None else None, - "id": obj.get("id"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_export_definition.py b/gooddata-api-client/gooddata_api_client/models/declarative_export_definition.py deleted file mode 100644 index 0dcfa2ce9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_export_definition.py +++ /dev/null @@ -1,157 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_export_definition_request_payload import DeclarativeExportDefinitionRequestPayload -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeExportDefinition(BaseModel): - """ - DeclarativeExportDefinition - """ # noqa: E501 - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Export definition object description.") - id: Annotated[str, Field(strict=True)] = Field(description="Export definition id.") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - request_payload: Optional[DeclarativeExportDefinitionRequestPayload] = Field(default=None, alias="requestPayload") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Export definition object title.") - __properties: ClassVar[List[str]] = ["createdAt", "createdBy", "description", "id", "modifiedAt", "modifiedBy", "requestPayload", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeExportDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeExportDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "requestPayload": DeclarativeExportDefinitionRequestPayload.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_export_definition_identifier.py b/gooddata-api-client/gooddata_api_client/models/declarative_export_definition_identifier.py deleted file mode 100644 index 85ce86b17..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_export_definition_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeExportDefinitionIdentifier(BaseModel): - """ - An export definition identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Export definition identifier.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeExportDefinitionIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeExportDefinitionIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_export_definition_request_payload.py b/gooddata-api-client/gooddata_api_client/models/declarative_export_definition_request_payload.py deleted file mode 100644 index cd37d0941..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_export_definition_request_payload.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.tabular_export_request import TabularExportRequest -from gooddata_api_client.models.visual_export_request import VisualExportRequest -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -DECLARATIVEEXPORTDEFINITIONREQUESTPAYLOAD_ONE_OF_SCHEMAS = ["TabularExportRequest", "VisualExportRequest"] - -class DeclarativeExportDefinitionRequestPayload(BaseModel): - """ - DeclarativeExportDefinitionRequestPayload - """ - # data type: TabularExportRequest - oneof_schema_1_validator: Optional[TabularExportRequest] = None - # data type: VisualExportRequest - oneof_schema_2_validator: Optional[VisualExportRequest] = None - actual_instance: Optional[Union[TabularExportRequest, VisualExportRequest]] = None - one_of_schemas: Set[str] = { "TabularExportRequest", "VisualExportRequest" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = DeclarativeExportDefinitionRequestPayload.model_construct() - error_messages = [] - match = 0 - # validate data type: TabularExportRequest - if not isinstance(v, TabularExportRequest): - error_messages.append(f"Error! Input type `{type(v)}` is not `TabularExportRequest`") - else: - match += 1 - # validate data type: VisualExportRequest - if not isinstance(v, VisualExportRequest): - error_messages.append(f"Error! Input type `{type(v)}` is not `VisualExportRequest`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in DeclarativeExportDefinitionRequestPayload with oneOf schemas: TabularExportRequest, VisualExportRequest. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into TabularExportRequest - try: - if match == 0: - instance.actual_instance = TabularExportRequest.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into VisualExportRequest - try: - if match == 0: - instance.actual_instance = VisualExportRequest.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into DeclarativeExportDefinitionRequestPayload with oneOf schemas: TabularExportRequest, VisualExportRequest. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], TabularExportRequest, VisualExportRequest]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_export_template.py b/gooddata-api-client/gooddata_api_client/models/declarative_export_template.py deleted file mode 100644 index 4f429f30e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_export_template.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.dashboard_slides_template import DashboardSlidesTemplate -from gooddata_api_client.models.widget_slides_template import WidgetSlidesTemplate -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeExportTemplate(BaseModel): - """ - A declarative form of a particular export template. - """ # noqa: E501 - dashboard_slides_template: Optional[DashboardSlidesTemplate] = Field(default=None, alias="dashboardSlidesTemplate") - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of an export template") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Name of an export template.") - widget_slides_template: Optional[WidgetSlidesTemplate] = Field(default=None, alias="widgetSlidesTemplate") - __properties: ClassVar[List[str]] = ["dashboardSlidesTemplate", "id", "name", "widgetSlidesTemplate"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeExportTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_slides_template - if self.dashboard_slides_template: - _dict['dashboardSlidesTemplate'] = self.dashboard_slides_template.to_dict() - # override the default output from pydantic by calling `to_dict()` of widget_slides_template - if self.widget_slides_template: - _dict['widgetSlidesTemplate'] = self.widget_slides_template.to_dict() - # set to None if dashboard_slides_template (nullable) is None - # and model_fields_set contains the field - if self.dashboard_slides_template is None and "dashboard_slides_template" in self.model_fields_set: - _dict['dashboardSlidesTemplate'] = None - - # set to None if widget_slides_template (nullable) is None - # and model_fields_set contains the field - if self.widget_slides_template is None and "widget_slides_template" in self.model_fields_set: - _dict['widgetSlidesTemplate'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeExportTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardSlidesTemplate": DashboardSlidesTemplate.from_dict(obj["dashboardSlidesTemplate"]) if obj.get("dashboardSlidesTemplate") is not None else None, - "id": obj.get("id"), - "name": obj.get("name"), - "widgetSlidesTemplate": WidgetSlidesTemplate.from_dict(obj["widgetSlidesTemplate"]) if obj.get("widgetSlidesTemplate") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_export_templates.py b/gooddata-api-client/gooddata_api_client/models/declarative_export_templates.py deleted file mode 100644 index 45b8b4213..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_export_templates.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_export_template import DeclarativeExportTemplate -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeExportTemplates(BaseModel): - """ - Export templates. - """ # noqa: E501 - export_templates: List[DeclarativeExportTemplate] = Field(alias="exportTemplates") - __properties: ClassVar[List[str]] = ["exportTemplates"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeExportTemplates from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in export_templates (list) - _items = [] - if self.export_templates: - for _item_export_templates in self.export_templates: - if _item_export_templates: - _items.append(_item_export_templates.to_dict()) - _dict['exportTemplates'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeExportTemplates from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "exportTemplates": [DeclarativeExportTemplate.from_dict(_item) for _item in obj["exportTemplates"]] if obj.get("exportTemplates") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_fact.py b/gooddata-api-client/gooddata_api_client/models/declarative_fact.py deleted file mode 100644 index 64ab13fe1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_fact.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeFact(BaseModel): - """ - A dataset fact. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Fact description.") - id: Annotated[str, Field(strict=True)] = Field(description="Fact ID.") - is_hidden: Optional[StrictBool] = Field(default=None, description="If true, this fact is hidden from AI search results.", alias="isHidden") - is_nullable: Optional[StrictBool] = Field(default=None, description="Flag indicating whether the associated source column allows null values.", alias="isNullable") - null_value: Optional[StrictStr] = Field(default=None, description="Value used in coalesce during joins instead of null.", alias="nullValue") - source_column: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A name of the source column in the table.", alias="sourceColumn") - source_column_data_type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="A type of the source column", alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Fact title.") - __properties: ClassVar[List[str]] = ["description", "id", "isHidden", "isNullable", "nullValue", "sourceColumn", "sourceColumnDataType", "tags", "title"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeFact from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeFact from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "id": obj.get("id"), - "isHidden": obj.get("isHidden"), - "isNullable": obj.get("isNullable"), - "nullValue": obj.get("nullValue"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_filter_context.py b/gooddata-api-client/gooddata_api_client/models/declarative_filter_context.py deleted file mode 100644 index bfffe1623..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_filter_context.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeFilterContext(BaseModel): - """ - DeclarativeFilterContext - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Filter Context description.") - id: Annotated[str, Field(strict=True)] = Field(description="Filter Context ID.") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Filter Context title.") - __properties: ClassVar[List[str]] = ["content", "description", "id", "tags", "title"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeFilterContext from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeFilterContext from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "description": obj.get("description"), - "id": obj.get("id"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_filter_view.py b/gooddata-api-client/gooddata_api_client/models/declarative_filter_view.py deleted file mode 100644 index 3d8470927..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_filter_view.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_analytical_dashboard_identifier import DeclarativeAnalyticalDashboardIdentifier -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeFilterView(BaseModel): - """ - DeclarativeFilterView - """ # noqa: E501 - analytical_dashboard: Optional[DeclarativeAnalyticalDashboardIdentifier] = Field(default=None, alias="analyticalDashboard") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - id: Annotated[str, Field(strict=True)] = Field(description="FilterView object ID.") - is_default: Optional[StrictBool] = Field(default=None, description="Indicator whether the filter view should by applied by default.", alias="isDefault") - tags: Optional[List[StrictStr]] = None - title: Annotated[str, Field(strict=True, max_length=255)] - user: Optional[DeclarativeUserIdentifier] = None - __properties: ClassVar[List[str]] = ["analyticalDashboard", "content", "description", "id", "isDefault", "tags", "title", "user"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeFilterView from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of user - if self.user: - _dict['user'] = self.user.to_dict() - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeFilterView from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": DeclarativeAnalyticalDashboardIdentifier.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "content": obj.get("content"), - "description": obj.get("description"), - "id": obj.get("id"), - "isDefault": obj.get("isDefault"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "user": DeclarativeUserIdentifier.from_dict(obj["user"]) if obj.get("user") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_identity_provider.py b/gooddata-api-client/gooddata_api_client/models/declarative_identity_provider.py deleted file mode 100644 index 68ee7ede1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_identity_provider.py +++ /dev/null @@ -1,134 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeIdentityProvider(BaseModel): - """ - Notification channels. - """ # noqa: E501 - custom_claim_mapping: Optional[Dict[str, StrictStr]] = Field(default=None, description="Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name, urn.gooddata.user_groups [optional]). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute.", alias="customClaimMapping") - id: Annotated[str, Field(strict=True)] = Field(description="FilterView object ID.") - identifiers: Optional[List[StrictStr]] = Field(default=None, description="List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.") - idp_type: Optional[StrictStr] = Field(default=None, description="Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", alias="idpType") - oauth_client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthClientId") - oauth_client_secret: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthClientSecret") - oauth_custom_auth_attributes: Optional[Dict[str, Annotated[str, Field(strict=True, max_length=10000)]]] = Field(default=None, description="Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute.", alias="oauthCustomAuthAttributes") - oauth_custom_scopes: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", alias="oauthCustomScopes") - oauth_issuer_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", alias="oauthIssuerId") - oauth_issuer_location: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The location of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthIssuerLocation") - oauth_subject_id_claim: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", alias="oauthSubjectIdClaim") - saml_metadata: Optional[Annotated[str, Field(strict=True, max_length=15000)]] = Field(default=None, description="Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP.", alias="samlMetadata") - __properties: ClassVar[List[str]] = ["customClaimMapping", "id", "identifiers", "idpType", "oauthClientId", "oauthClientSecret", "oauthCustomAuthAttributes", "oauthCustomScopes", "oauthIssuerId", "oauthIssuerLocation", "oauthSubjectIdClaim", "samlMetadata"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('idp_type') - def idp_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MANAGED_IDP', 'FIM_IDP', 'DEX_IDP', 'CUSTOM_IDP']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGED_IDP', 'FIM_IDP', 'DEX_IDP', 'CUSTOM_IDP')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeIdentityProvider from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if oauth_custom_scopes (nullable) is None - # and model_fields_set contains the field - if self.oauth_custom_scopes is None and "oauth_custom_scopes" in self.model_fields_set: - _dict['oauthCustomScopes'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeIdentityProvider from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customClaimMapping": obj.get("customClaimMapping"), - "id": obj.get("id"), - "identifiers": obj.get("identifiers"), - "idpType": obj.get("idpType"), - "oauthClientId": obj.get("oauthClientId"), - "oauthClientSecret": obj.get("oauthClientSecret"), - "oauthCustomAuthAttributes": obj.get("oauthCustomAuthAttributes"), - "oauthCustomScopes": obj.get("oauthCustomScopes"), - "oauthIssuerId": obj.get("oauthIssuerId"), - "oauthIssuerLocation": obj.get("oauthIssuerLocation"), - "oauthSubjectIdClaim": obj.get("oauthSubjectIdClaim"), - "samlMetadata": obj.get("samlMetadata") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_identity_provider_identifier.py b/gooddata-api-client/gooddata_api_client/models/declarative_identity_provider_identifier.py deleted file mode 100644 index 864988d8a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_identity_provider_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeIdentityProviderIdentifier(BaseModel): - """ - An Identity Provider identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of the identity provider.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['identityProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('identityProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeIdentityProviderIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeIdentityProviderIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_jwk.py b/gooddata-api-client/gooddata_api_client/models/declarative_jwk.py deleted file mode 100644 index 868f48df0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_jwk.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_jwk_specification import DeclarativeJwkSpecification -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeJwk(BaseModel): - """ - A declarative form of the JWK. - """ # noqa: E501 - content: DeclarativeJwkSpecification - id: Annotated[str, Field(strict=True)] = Field(description="JWK object ID.") - __properties: ClassVar[List[str]] = ["content", "id"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeJwk from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content - if self.content: - _dict['content'] = self.content.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeJwk from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": DeclarativeJwkSpecification.from_dict(obj["content"]) if obj.get("content") is not None else None, - "id": obj.get("id") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_jwk_specification.py b/gooddata-api-client/gooddata_api_client/models/declarative_jwk_specification.py deleted file mode 100644 index 14ace5d30..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_jwk_specification.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.declarative_rsa_specification import DeclarativeRsaSpecification -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -DECLARATIVEJWKSPECIFICATION_ONE_OF_SCHEMAS = ["DeclarativeRsaSpecification"] - -class DeclarativeJwkSpecification(BaseModel): - """ - Declarative specification of the cryptographic key. - """ - # data type: DeclarativeRsaSpecification - oneof_schema_1_validator: Optional[DeclarativeRsaSpecification] = None - actual_instance: Optional[Union[DeclarativeRsaSpecification]] = None - one_of_schemas: Set[str] = { "DeclarativeRsaSpecification" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = DeclarativeJwkSpecification.model_construct() - error_messages = [] - match = 0 - # validate data type: DeclarativeRsaSpecification - if not isinstance(v, DeclarativeRsaSpecification): - error_messages.append(f"Error! Input type `{type(v)}` is not `DeclarativeRsaSpecification`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in DeclarativeJwkSpecification with oneOf schemas: DeclarativeRsaSpecification. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DeclarativeRsaSpecification - try: - if match == 0: - instance.actual_instance = DeclarativeRsaSpecification.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into DeclarativeJwkSpecification with oneOf schemas: DeclarativeRsaSpecification. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DeclarativeRsaSpecification]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_label.py b/gooddata-api-client/gooddata_api_client/models/declarative_label.py deleted file mode 100644 index 69b7b8a4f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_label.py +++ /dev/null @@ -1,154 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_label_translation import DeclarativeLabelTranslation -from gooddata_api_client.models.geo_area_config import GeoAreaConfig -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeLabel(BaseModel): - """ - A attribute label. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Label description.") - geo_area_config: Optional[GeoAreaConfig] = Field(default=None, alias="geoAreaConfig") - id: Annotated[str, Field(strict=True)] = Field(description="Label ID.") - is_hidden: Optional[StrictBool] = Field(default=None, description="Determines if the label is hidden from AI features.", alias="isHidden") - is_nullable: Optional[StrictBool] = Field(default=None, description="Flag indicating whether the associated source column allows null values.", alias="isNullable") - locale: Optional[StrictStr] = Field(default=None, description="Default label locale.") - null_value: Optional[StrictStr] = Field(default=None, description="Value used in coalesce during joins instead of null.", alias="nullValue") - source_column: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A name of the source column in the table.", alias="sourceColumn") - source_column_data_type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="A type of the source column", alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Label title.") - translations: Optional[List[DeclarativeLabelTranslation]] = Field(default=None, description="Other translations.") - value_type: Optional[StrictStr] = Field(default=None, description="Specific type of label", alias="valueType") - __properties: ClassVar[List[str]] = ["description", "geoAreaConfig", "id", "isHidden", "isNullable", "locale", "nullValue", "sourceColumn", "sourceColumnDataType", "tags", "title", "translations", "valueType"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - @field_validator('value_type') - def value_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeLabel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of geo_area_config - if self.geo_area_config: - _dict['geoAreaConfig'] = self.geo_area_config.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in translations (list) - _items = [] - if self.translations: - for _item_translations in self.translations: - if _item_translations: - _items.append(_item_translations.to_dict()) - _dict['translations'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeLabel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "geoAreaConfig": GeoAreaConfig.from_dict(obj["geoAreaConfig"]) if obj.get("geoAreaConfig") is not None else None, - "id": obj.get("id"), - "isHidden": obj.get("isHidden"), - "isNullable": obj.get("isNullable"), - "locale": obj.get("locale"), - "nullValue": obj.get("nullValue"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "translations": [DeclarativeLabelTranslation.from_dict(_item) for _item in obj["translations"]] if obj.get("translations") is not None else None, - "valueType": obj.get("valueType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_label_translation.py b/gooddata-api-client/gooddata_api_client/models/declarative_label_translation.py deleted file mode 100644 index 840b7aceb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_label_translation.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeLabelTranslation(BaseModel): - """ - A label translation. - """ # noqa: E501 - locale: StrictStr = Field(description="Translation locale.") - source_column: StrictStr = Field(description="Translation source column.", alias="sourceColumn") - __properties: ClassVar[List[str]] = ["locale", "sourceColumn"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeLabelTranslation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeLabelTranslation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "locale": obj.get("locale"), - "sourceColumn": obj.get("sourceColumn") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_ldm.py b/gooddata-api-client/gooddata_api_client/models/declarative_ldm.py deleted file mode 100644 index 309d8a323..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_ldm.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_dataset import DeclarativeDataset -from gooddata_api_client.models.declarative_dataset_extension import DeclarativeDatasetExtension -from gooddata_api_client.models.declarative_date_dataset import DeclarativeDateDataset -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeLdm(BaseModel): - """ - A logical data model (LDM) representation. - """ # noqa: E501 - dataset_extensions: Optional[List[DeclarativeDatasetExtension]] = Field(default=None, description="An array containing extensions for datasets defined in parent workspaces.", alias="datasetExtensions") - datasets: Optional[List[DeclarativeDataset]] = Field(default=None, description="An array containing datasets.") - date_instances: Optional[List[DeclarativeDateDataset]] = Field(default=None, description="An array containing date-related datasets.", alias="dateInstances") - __properties: ClassVar[List[str]] = ["datasetExtensions", "datasets", "dateInstances"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeLdm from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dataset_extensions (list) - _items = [] - if self.dataset_extensions: - for _item_dataset_extensions in self.dataset_extensions: - if _item_dataset_extensions: - _items.append(_item_dataset_extensions.to_dict()) - _dict['datasetExtensions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in datasets (list) - _items = [] - if self.datasets: - for _item_datasets in self.datasets: - if _item_datasets: - _items.append(_item_datasets.to_dict()) - _dict['datasets'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in date_instances (list) - _items = [] - if self.date_instances: - for _item_date_instances in self.date_instances: - if _item_date_instances: - _items.append(_item_date_instances.to_dict()) - _dict['dateInstances'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeLdm from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "datasetExtensions": [DeclarativeDatasetExtension.from_dict(_item) for _item in obj["datasetExtensions"]] if obj.get("datasetExtensions") is not None else None, - "datasets": [DeclarativeDataset.from_dict(_item) for _item in obj["datasets"]] if obj.get("datasets") is not None else None, - "dateInstances": [DeclarativeDateDataset.from_dict(_item) for _item in obj["dateInstances"]] if obj.get("dateInstances") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_memory_item.py b/gooddata-api-client/gooddata_api_client/models/declarative_memory_item.py deleted file mode 100644 index eb237c69e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_memory_item.py +++ /dev/null @@ -1,167 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeMemoryItem(BaseModel): - """ - DeclarativeMemoryItem - """ # noqa: E501 - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Memory item description.") - id: Annotated[str, Field(strict=True)] = Field(description="Memory item ID.") - instruction: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The text that will be injected into the system prompt.") - is_disabled: Optional[StrictBool] = Field(default=None, description="Whether memory item is disabled.", alias="isDisabled") - keywords: Optional[List[StrictStr]] = Field(default=None, description="Set of unique strings used for semantic similarity filtering.") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - strategy: StrictStr = Field(description="Strategy defining when the memory item should be applied") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Memory item title.") - __properties: ClassVar[List[str]] = ["createdAt", "createdBy", "description", "id", "instruction", "isDisabled", "keywords", "modifiedAt", "modifiedBy", "strategy", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('strategy') - def strategy_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ALWAYS', 'AUTO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'AUTO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeMemoryItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeMemoryItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "instruction": obj.get("instruction"), - "isDisabled": obj.get("isDisabled"), - "keywords": obj.get("keywords"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "strategy": obj.get("strategy"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_metric.py b/gooddata-api-client/gooddata_api_client/models/declarative_metric.py deleted file mode 100644 index 197a8003b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_metric.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeMetric(BaseModel): - """ - DeclarativeMetric - """ # noqa: E501 - certification: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - certification_message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.", alias="certificationMessage") - certified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time when the certification was set.", alias="certifiedAt") - certified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="certifiedBy") - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Metric description.") - id: Annotated[str, Field(strict=True)] = Field(description="Metric ID.") - is_hidden: Optional[StrictBool] = Field(default=None, description="If true, this metric is hidden from AI search results.", alias="isHidden") - is_hidden_from_kda: Optional[StrictBool] = Field(default=None, description="If true, this metric is hidden from key drive analysis.", alias="isHiddenFromKda") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Metric title.") - __properties: ClassVar[List[str]] = ["certification", "certificationMessage", "certifiedAt", "certifiedBy", "content", "createdAt", "createdBy", "description", "id", "isHidden", "isHiddenFromKda", "modifiedAt", "modifiedBy", "tags", "title"] - - @field_validator('certification') - def certification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('certified_at') - def certified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeMetric from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of certified_by - if self.certified_by: - _dict['certifiedBy'] = self.certified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # set to None if certification_message (nullable) is None - # and model_fields_set contains the field - if self.certification_message is None and "certification_message" in self.model_fields_set: - _dict['certificationMessage'] = None - - # set to None if certified_at (nullable) is None - # and model_fields_set contains the field - if self.certified_at is None and "certified_at" in self.model_fields_set: - _dict['certifiedAt'] = None - - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeMetric from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "certification": obj.get("certification"), - "certificationMessage": obj.get("certificationMessage"), - "certifiedAt": obj.get("certifiedAt"), - "certifiedBy": DeclarativeUserIdentifier.from_dict(obj["certifiedBy"]) if obj.get("certifiedBy") is not None else None, - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "isHidden": obj.get("isHidden"), - "isHiddenFromKda": obj.get("isHiddenFromKda"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_model.py b/gooddata-api-client/gooddata_api_client/models/declarative_model.py deleted file mode 100644 index 38cfe93e9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_model.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_ldm import DeclarativeLdm -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeModel(BaseModel): - """ - A data model structured as a set of its attributes. - """ # noqa: E501 - ldm: Optional[DeclarativeLdm] = None - __properties: ClassVar[List[str]] = ["ldm"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeModel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of ldm - if self.ldm: - _dict['ldm'] = self.ldm.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeModel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "ldm": DeclarativeLdm.from_dict(obj["ldm"]) if obj.get("ldm") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel.py b/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel.py deleted file mode 100644 index 21ce5760e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel.py +++ /dev/null @@ -1,169 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_notification_channel_destination import DeclarativeNotificationChannelDestination -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeNotificationChannel(BaseModel): - """ - A declarative form of a particular notification channel. - """ # noqa: E501 - allowed_recipients: Optional[StrictStr] = Field(default='INTERNAL', description="Allowed recipients of notifications from this channel. CREATOR - only the creator INTERNAL - all users within the organization EXTERNAL - all recipients including those outside the organization ", alias="allowedRecipients") - custom_dashboard_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are: {workspaceId} {dashboardId} {automationId} {asOfDate} ", alias="customDashboardUrl") - dashboard_link_visibility: Optional[StrictStr] = Field(default='INTERNAL_ONLY', description="Dashboard link visibility in notifications. HIDDEN - the link will not be included INTERNAL_ONLY - only internal users will see the link ALL - all users will see the link ", alias="dashboardLinkVisibility") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of a notification channel.") - destination: Optional[DeclarativeNotificationChannelDestination] = None - destination_type: Optional[StrictStr] = Field(default=None, alias="destinationType") - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of a notification channel") - in_platform_notification: Optional[StrictStr] = Field(default='DISABLED', description="In-platform notifications configuration. No effect if the destination type is IN_PLATFORM. DISABLED - in-platform notifications are not sent ENABLED - in-platform notifications are sent in addition to the regular notifications ", alias="inPlatformNotification") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of a notification channel.") - notification_source: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are: {{workspaceId}} {{workspaceName}} {{workspaceDescription}} {{dashboardId}} {{dashboardName}} {{dashboardDescription}} ", alias="notificationSource") - __properties: ClassVar[List[str]] = ["allowedRecipients", "customDashboardUrl", "dashboardLinkVisibility", "description", "destination", "destinationType", "id", "inPlatformNotification", "name", "notificationSource"] - - @field_validator('allowed_recipients') - def allowed_recipients_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CREATOR', 'INTERNAL', 'EXTERNAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CREATOR', 'INTERNAL', 'EXTERNAL')") - return value - - @field_validator('dashboard_link_visibility') - def dashboard_link_visibility_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['HIDDEN', 'INTERNAL_ONLY', 'ALL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('HIDDEN', 'INTERNAL_ONLY', 'ALL')") - return value - - @field_validator('destination_type') - def destination_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['WEBHOOK', 'SMTP', 'DEFAULT_SMTP', 'IN_PLATFORM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('WEBHOOK', 'SMTP', 'DEFAULT_SMTP', 'IN_PLATFORM')") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('in_platform_notification') - def in_platform_notification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DISABLED', 'ENABLED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DISABLED', 'ENABLED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeNotificationChannel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "destination_type", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of destination - if self.destination: - _dict['destination'] = self.destination.to_dict() - # set to None if destination_type (nullable) is None - # and model_fields_set contains the field - if self.destination_type is None and "destination_type" in self.model_fields_set: - _dict['destinationType'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeNotificationChannel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedRecipients": obj.get("allowedRecipients") if obj.get("allowedRecipients") is not None else 'INTERNAL', - "customDashboardUrl": obj.get("customDashboardUrl"), - "dashboardLinkVisibility": obj.get("dashboardLinkVisibility") if obj.get("dashboardLinkVisibility") is not None else 'INTERNAL_ONLY', - "description": obj.get("description"), - "destination": DeclarativeNotificationChannelDestination.from_dict(obj["destination"]) if obj.get("destination") is not None else None, - "destinationType": obj.get("destinationType"), - "id": obj.get("id"), - "inPlatformNotification": obj.get("inPlatformNotification") if obj.get("inPlatformNotification") is not None else 'DISABLED', - "name": obj.get("name"), - "notificationSource": obj.get("notificationSource") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_destination.py b/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_destination.py deleted file mode 100644 index 8f283d718..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_destination.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.default_smtp import DefaultSmtp -from gooddata_api_client.models.in_platform import InPlatform -from gooddata_api_client.models.smtp import Smtp -from gooddata_api_client.models.webhook import Webhook -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -DECLARATIVENOTIFICATIONCHANNELDESTINATION_ONE_OF_SCHEMAS = ["DefaultSmtp", "InPlatform", "Smtp", "Webhook"] - -class DeclarativeNotificationChannelDestination(BaseModel): - """ - DeclarativeNotificationChannelDestination - """ - # data type: DefaultSmtp - oneof_schema_1_validator: Optional[DefaultSmtp] = None - # data type: InPlatform - oneof_schema_2_validator: Optional[InPlatform] = None - # data type: Smtp - oneof_schema_3_validator: Optional[Smtp] = None - # data type: Webhook - oneof_schema_4_validator: Optional[Webhook] = None - actual_instance: Optional[Union[DefaultSmtp, InPlatform, Smtp, Webhook]] = None - one_of_schemas: Set[str] = { "DefaultSmtp", "InPlatform", "Smtp", "Webhook" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = DeclarativeNotificationChannelDestination.model_construct() - error_messages = [] - match = 0 - # validate data type: DefaultSmtp - if not isinstance(v, DefaultSmtp): - error_messages.append(f"Error! Input type `{type(v)}` is not `DefaultSmtp`") - else: - match += 1 - # validate data type: InPlatform - if not isinstance(v, InPlatform): - error_messages.append(f"Error! Input type `{type(v)}` is not `InPlatform`") - else: - match += 1 - # validate data type: Smtp - if not isinstance(v, Smtp): - error_messages.append(f"Error! Input type `{type(v)}` is not `Smtp`") - else: - match += 1 - # validate data type: Webhook - if not isinstance(v, Webhook): - error_messages.append(f"Error! Input type `{type(v)}` is not `Webhook`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in DeclarativeNotificationChannelDestination with oneOf schemas: DefaultSmtp, InPlatform, Smtp, Webhook. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DefaultSmtp - try: - if match == 0: - instance.actual_instance = DefaultSmtp.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into InPlatform - try: - if match == 0: - instance.actual_instance = InPlatform.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Smtp - try: - if match == 0: - instance.actual_instance = Smtp.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Webhook - try: - if match == 0: - instance.actual_instance = Webhook.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into DeclarativeNotificationChannelDestination with oneOf schemas: DefaultSmtp, InPlatform, Smtp, Webhook. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DefaultSmtp, InPlatform, Smtp, Webhook]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_identifier.py b/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_identifier.py deleted file mode 100644 index 45173197c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channel_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeNotificationChannelIdentifier(BaseModel): - """ - A notification channel identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Notification channel identifier.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeNotificationChannelIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeNotificationChannelIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channels.py b/gooddata-api-client/gooddata_api_client/models/declarative_notification_channels.py deleted file mode 100644 index 1c152464f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_notification_channels.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_notification_channel import DeclarativeNotificationChannel -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeNotificationChannels(BaseModel): - """ - Notification channels. - """ # noqa: E501 - notification_channels: List[DeclarativeNotificationChannel] = Field(alias="notificationChannels") - __properties: ClassVar[List[str]] = ["notificationChannels"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeNotificationChannels from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in notification_channels (list) - _items = [] - if self.notification_channels: - for _item_notification_channels in self.notification_channels: - if _item_notification_channels: - _items.append(_item_notification_channels.to_dict()) - _dict['notificationChannels'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeNotificationChannels from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "notificationChannels": [DeclarativeNotificationChannel.from_dict(_item) for _item in obj["notificationChannels"]] if obj.get("notificationChannels") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_organization.py b/gooddata-api-client/gooddata_api_client/models/declarative_organization.py deleted file mode 100644 index 8e7da66c3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_organization.py +++ /dev/null @@ -1,192 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_custom_geo_collection import DeclarativeCustomGeoCollection -from gooddata_api_client.models.declarative_data_source import DeclarativeDataSource -from gooddata_api_client.models.declarative_export_template import DeclarativeExportTemplate -from gooddata_api_client.models.declarative_identity_provider import DeclarativeIdentityProvider -from gooddata_api_client.models.declarative_jwk import DeclarativeJwk -from gooddata_api_client.models.declarative_notification_channel import DeclarativeNotificationChannel -from gooddata_api_client.models.declarative_organization_info import DeclarativeOrganizationInfo -from gooddata_api_client.models.declarative_user import DeclarativeUser -from gooddata_api_client.models.declarative_user_group import DeclarativeUserGroup -from gooddata_api_client.models.declarative_workspace import DeclarativeWorkspace -from gooddata_api_client.models.declarative_workspace_data_filter import DeclarativeWorkspaceDataFilter -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeOrganization(BaseModel): - """ - Complete definition of an organization in a declarative form. - """ # noqa: E501 - custom_geo_collections: Optional[List[DeclarativeCustomGeoCollection]] = Field(default=None, alias="customGeoCollections") - data_sources: Optional[List[DeclarativeDataSource]] = Field(default=None, alias="dataSources") - export_templates: Optional[List[DeclarativeExportTemplate]] = Field(default=None, alias="exportTemplates") - identity_providers: Optional[List[DeclarativeIdentityProvider]] = Field(default=None, alias="identityProviders") - jwks: Optional[List[DeclarativeJwk]] = None - notification_channels: Optional[List[DeclarativeNotificationChannel]] = Field(default=None, alias="notificationChannels") - organization: DeclarativeOrganizationInfo - user_groups: Optional[List[DeclarativeUserGroup]] = Field(default=None, alias="userGroups") - users: Optional[List[DeclarativeUser]] = None - workspace_data_filters: Optional[List[DeclarativeWorkspaceDataFilter]] = Field(default=None, alias="workspaceDataFilters") - workspaces: Optional[List[DeclarativeWorkspace]] = None - __properties: ClassVar[List[str]] = ["customGeoCollections", "dataSources", "exportTemplates", "identityProviders", "jwks", "notificationChannels", "organization", "userGroups", "users", "workspaceDataFilters", "workspaces"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeOrganization from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in custom_geo_collections (list) - _items = [] - if self.custom_geo_collections: - for _item_custom_geo_collections in self.custom_geo_collections: - if _item_custom_geo_collections: - _items.append(_item_custom_geo_collections.to_dict()) - _dict['customGeoCollections'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in data_sources (list) - _items = [] - if self.data_sources: - for _item_data_sources in self.data_sources: - if _item_data_sources: - _items.append(_item_data_sources.to_dict()) - _dict['dataSources'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in export_templates (list) - _items = [] - if self.export_templates: - for _item_export_templates in self.export_templates: - if _item_export_templates: - _items.append(_item_export_templates.to_dict()) - _dict['exportTemplates'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in identity_providers (list) - _items = [] - if self.identity_providers: - for _item_identity_providers in self.identity_providers: - if _item_identity_providers: - _items.append(_item_identity_providers.to_dict()) - _dict['identityProviders'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in jwks (list) - _items = [] - if self.jwks: - for _item_jwks in self.jwks: - if _item_jwks: - _items.append(_item_jwks.to_dict()) - _dict['jwks'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in notification_channels (list) - _items = [] - if self.notification_channels: - for _item_notification_channels in self.notification_channels: - if _item_notification_channels: - _items.append(_item_notification_channels.to_dict()) - _dict['notificationChannels'] = _items - # override the default output from pydantic by calling `to_dict()` of organization - if self.organization: - _dict['organization'] = self.organization.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filters (list) - _items = [] - if self.workspace_data_filters: - for _item_workspace_data_filters in self.workspace_data_filters: - if _item_workspace_data_filters: - _items.append(_item_workspace_data_filters.to_dict()) - _dict['workspaceDataFilters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspaces (list) - _items = [] - if self.workspaces: - for _item_workspaces in self.workspaces: - if _item_workspaces: - _items.append(_item_workspaces.to_dict()) - _dict['workspaces'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeOrganization from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customGeoCollections": [DeclarativeCustomGeoCollection.from_dict(_item) for _item in obj["customGeoCollections"]] if obj.get("customGeoCollections") is not None else None, - "dataSources": [DeclarativeDataSource.from_dict(_item) for _item in obj["dataSources"]] if obj.get("dataSources") is not None else None, - "exportTemplates": [DeclarativeExportTemplate.from_dict(_item) for _item in obj["exportTemplates"]] if obj.get("exportTemplates") is not None else None, - "identityProviders": [DeclarativeIdentityProvider.from_dict(_item) for _item in obj["identityProviders"]] if obj.get("identityProviders") is not None else None, - "jwks": [DeclarativeJwk.from_dict(_item) for _item in obj["jwks"]] if obj.get("jwks") is not None else None, - "notificationChannels": [DeclarativeNotificationChannel.from_dict(_item) for _item in obj["notificationChannels"]] if obj.get("notificationChannels") is not None else None, - "organization": DeclarativeOrganizationInfo.from_dict(obj["organization"]) if obj.get("organization") is not None else None, - "userGroups": [DeclarativeUserGroup.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None, - "users": [DeclarativeUser.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None, - "workspaceDataFilters": [DeclarativeWorkspaceDataFilter.from_dict(_item) for _item in obj["workspaceDataFilters"]] if obj.get("workspaceDataFilters") is not None else None, - "workspaces": [DeclarativeWorkspace.from_dict(_item) for _item in obj["workspaces"]] if obj.get("workspaces") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_organization_info.py b/gooddata-api-client/gooddata_api_client/models/declarative_organization_info.py deleted file mode 100644 index 357106c6f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_organization_info.py +++ /dev/null @@ -1,162 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_color_palette import DeclarativeColorPalette -from gooddata_api_client.models.declarative_csp_directive import DeclarativeCspDirective -from gooddata_api_client.models.declarative_identity_provider_identifier import DeclarativeIdentityProviderIdentifier -from gooddata_api_client.models.declarative_organization_permission import DeclarativeOrganizationPermission -from gooddata_api_client.models.declarative_setting import DeclarativeSetting -from gooddata_api_client.models.declarative_theme import DeclarativeTheme -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeOrganizationInfo(BaseModel): - """ - Information available about an organization. - """ # noqa: E501 - allowed_origins: Optional[List[StrictStr]] = Field(default=None, alias="allowedOrigins") - color_palettes: Optional[List[DeclarativeColorPalette]] = Field(default=None, description="A list of color palettes.", alias="colorPalettes") - csp_directives: Optional[List[DeclarativeCspDirective]] = Field(default=None, description="A list of CSP directives.", alias="cspDirectives") - early_access: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Early access defined on level Organization", alias="earlyAccess") - early_access_values: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="Early access defined on level Organization", alias="earlyAccessValues") - hostname: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Formal hostname used in deployment.") - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of the organization.") - identity_provider: Optional[DeclarativeIdentityProviderIdentifier] = Field(default=None, alias="identityProvider") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Formal name of the organization.") - permissions: List[DeclarativeOrganizationPermission] - settings: Optional[List[DeclarativeSetting]] = Field(default=None, description="A list of organization settings.") - themes: Optional[List[DeclarativeTheme]] = Field(default=None, description="A list of themes.") - __properties: ClassVar[List[str]] = ["allowedOrigins", "colorPalettes", "cspDirectives", "earlyAccess", "earlyAccessValues", "hostname", "id", "identityProvider", "name", "permissions", "settings", "themes"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeOrganizationInfo from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in color_palettes (list) - _items = [] - if self.color_palettes: - for _item_color_palettes in self.color_palettes: - if _item_color_palettes: - _items.append(_item_color_palettes.to_dict()) - _dict['colorPalettes'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in csp_directives (list) - _items = [] - if self.csp_directives: - for _item_csp_directives in self.csp_directives: - if _item_csp_directives: - _items.append(_item_csp_directives.to_dict()) - _dict['cspDirectives'] = _items - # override the default output from pydantic by calling `to_dict()` of identity_provider - if self.identity_provider: - _dict['identityProvider'] = self.identity_provider.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in settings (list) - _items = [] - if self.settings: - for _item_settings in self.settings: - if _item_settings: - _items.append(_item_settings.to_dict()) - _dict['settings'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in themes (list) - _items = [] - if self.themes: - for _item_themes in self.themes: - if _item_themes: - _items.append(_item_themes.to_dict()) - _dict['themes'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeOrganizationInfo from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedOrigins": obj.get("allowedOrigins"), - "colorPalettes": [DeclarativeColorPalette.from_dict(_item) for _item in obj["colorPalettes"]] if obj.get("colorPalettes") is not None else None, - "cspDirectives": [DeclarativeCspDirective.from_dict(_item) for _item in obj["cspDirectives"]] if obj.get("cspDirectives") is not None else None, - "earlyAccess": obj.get("earlyAccess"), - "earlyAccessValues": obj.get("earlyAccessValues"), - "hostname": obj.get("hostname"), - "id": obj.get("id"), - "identityProvider": DeclarativeIdentityProviderIdentifier.from_dict(obj["identityProvider"]) if obj.get("identityProvider") is not None else None, - "name": obj.get("name"), - "permissions": [DeclarativeOrganizationPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, - "settings": [DeclarativeSetting.from_dict(_item) for _item in obj["settings"]] if obj.get("settings") is not None else None, - "themes": [DeclarativeTheme.from_dict(_item) for _item in obj["themes"]] if obj.get("themes") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_organization_permission.py b/gooddata-api-client/gooddata_api_client/models/declarative_organization_permission.py deleted file mode 100644 index ddb948c44..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_organization_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeOrganizationPermission(BaseModel): - """ - Definition of an organization permission assigned to a user/user-group. - """ # noqa: E501 - assignee: AssigneeIdentifier - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["assignee", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MANAGE', 'SELF_CREATE_TOKEN', 'BASE_UI_ACCESS']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGE', 'SELF_CREATE_TOKEN', 'BASE_UI_ACCESS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeOrganizationPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeOrganizationPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None, - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_reference.py b/gooddata-api-client/gooddata_api_client/models/declarative_reference.py deleted file mode 100644 index 66eb4bf2f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_reference.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_reference_source import DeclarativeReferenceSource -from gooddata_api_client.models.reference_identifier import ReferenceIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeReference(BaseModel): - """ - A dataset reference. - """ # noqa: E501 - identifier: ReferenceIdentifier - multivalue: StrictBool = Field(description="The multi-value flag enables many-to-many cardinality for references.") - source_column_data_types: Optional[List[StrictStr]] = Field(default=None, description="An array of source column data types for a given reference. Deprecated, use 'sources' instead.", alias="sourceColumnDataTypes") - source_columns: Optional[List[StrictStr]] = Field(default=None, description="An array of source column names for a given reference. Deprecated, use 'sources' instead.", alias="sourceColumns") - sources: Optional[List[DeclarativeReferenceSource]] = Field(default=None, description="An array of source columns for a given reference.") - __properties: ClassVar[List[str]] = ["identifier", "multivalue", "sourceColumnDataTypes", "sourceColumns", "sources"] - - @field_validator('source_column_data_types') - def source_column_data_types_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - raise ValueError("each list item must be one of ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeReference from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in sources (list) - _items = [] - if self.sources: - for _item_sources in self.sources: - if _item_sources: - _items.append(_item_sources.to_dict()) - _dict['sources'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeReference from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": ReferenceIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None, - "multivalue": obj.get("multivalue"), - "sourceColumnDataTypes": obj.get("sourceColumnDataTypes"), - "sourceColumns": obj.get("sourceColumns"), - "sources": [DeclarativeReferenceSource.from_dict(_item) for _item in obj["sources"]] if obj.get("sources") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_reference_source.py b/gooddata-api-client/gooddata_api_client/models/declarative_reference_source.py deleted file mode 100644 index c4f0a1c29..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_reference_source.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.grain_identifier import GrainIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeReferenceSource(BaseModel): - """ - A dataset reference source column description. - """ # noqa: E501 - column: Annotated[str, Field(strict=True, max_length=255)] = Field(description="A name of the source column in the table.") - data_type: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="A type of the source column.", alias="dataType") - is_nullable: Optional[StrictBool] = Field(default=None, description="Flag indicating whether the associated source column allows null values.", alias="isNullable") - null_value: Optional[StrictStr] = Field(default=None, description="Value used in coalesce during joins instead of null.", alias="nullValue") - target: GrainIdentifier - __properties: ClassVar[List[str]] = ["column", "dataType", "isNullable", "nullValue", "target"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeReferenceSource from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of target - if self.target: - _dict['target'] = self.target.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeReferenceSource from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "column": obj.get("column"), - "dataType": obj.get("dataType"), - "isNullable": obj.get("isNullable"), - "nullValue": obj.get("nullValue"), - "target": GrainIdentifier.from_dict(obj["target"]) if obj.get("target") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_rsa_specification.py b/gooddata-api-client/gooddata_api_client/models/declarative_rsa_specification.py deleted file mode 100644 index f98ec876d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_rsa_specification.py +++ /dev/null @@ -1,134 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeRsaSpecification(BaseModel): - """ - Declarative specification of the cryptographic key. - """ # noqa: E501 - alg: StrictStr = Field(description="Algorithm intended for use with the key.") - e: StrictStr = Field(description="parameter contains the exponent value for the RSA public key.") - kid: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Parameter is used to match a specific key.") - kty: StrictStr = Field(description="Key type parameter") - n: StrictStr = Field(description="Parameter contains the modulus value for the RSA public key.") - use: StrictStr = Field(description="Parameter identifies the intended use of the public key.") - x5c: Optional[List[StrictStr]] = Field(default=None, description="Parameter contains a chain of one or more PKIX certificates.") - x5t: Optional[StrictStr] = Field(default=None, description="Parameter is a base64url-encoded SHA-1 thumbprint of the DER encoding of an X.509 certificate.") - __properties: ClassVar[List[str]] = ["alg", "e", "kid", "kty", "n", "use", "x5c", "x5t"] - - @field_validator('alg') - def alg_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RS256', 'RS384', 'RS512']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RS256', 'RS384', 'RS512')") - return value - - @field_validator('kid') - def kid_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[^.]", value): - raise ValueError(r"must validate the regular expression /^[^.]/") - return value - - @field_validator('kty') - def kty_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RSA']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RSA')") - return value - - @field_validator('use') - def use_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['sig']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('sig')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeRsaSpecification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeRsaSpecification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alg": obj.get("alg"), - "e": obj.get("e"), - "kid": obj.get("kid"), - "kty": obj.get("kty"), - "n": obj.get("n"), - "use": obj.get("use"), - "x5c": obj.get("x5c"), - "x5t": obj.get("x5t") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_setting.py b/gooddata-api-client/gooddata_api_client/models/declarative_setting.py deleted file mode 100644 index 5d85c9992..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_setting.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeSetting(BaseModel): - """ - Setting and its value. - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - id: Annotated[str, Field(strict=True)] = Field(description="Setting ID.") - type: Optional[StrictStr] = Field(default=None, description="Type of the setting.") - __properties: ClassVar[List[str]] = ["content", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TIMEZONE', 'ACTIVE_THEME', 'ACTIVE_COLOR_PALETTE', 'ACTIVE_LLM_ENDPOINT', 'ACTIVE_LLM_PROVIDER', 'ACTIVE_CALENDARS', 'WHITE_LABELING', 'LOCALE', 'METADATA_LOCALE', 'FORMAT_LOCALE', 'MAPBOX_TOKEN', 'AG_GRID_TOKEN', 'WEEK_START', 'FISCAL_YEAR', 'SHOW_HIDDEN_CATALOG_ITEMS', 'OPERATOR_OVERRIDES', 'TIMEZONE_VALIDATION_ENABLED', 'OPENAI_CONFIG', 'ENABLE_FILE_ANALYTICS', 'ALERT', 'SEPARATORS', 'DATE_FILTER_CONFIG', 'JIT_PROVISIONING', 'JWT_JIT_PROVISIONING', 'DASHBOARD_FILTERS_APPLY_MODE', 'ENABLE_SLIDES_EXPORT', 'ENABLE_SNAPSHOT_EXPORT', 'AI_RATE_LIMIT', 'ATTACHMENT_SIZE_LIMIT', 'ATTACHMENT_LINK_TTL', 'AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE', 'ENABLE_DRILL_TO_URL_BY_DEFAULT', 'ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS', 'ENABLE_AUTOMATION_EVALUATION_MODE', 'ENABLE_ACCESSIBILITY_MODE', 'REGISTERED_PLUGGABLE_APPLICATIONS', 'DATA_LOCALE', 'LDM_DEFAULT_LOCALE', 'EXPORT_RESULT_POLLING_TIMEOUT_SECONDS', 'MAX_ZOOM_LEVEL', 'SORT_CASE_SENSITIVE', 'METRIC_FORMAT_OVERRIDE', 'ENABLE_AI_ON_DATA', 'API_ENTITIES_DEFAULT_CONTENT_MEDIA_TYPE', 'ENABLE_NULL_JOINS', 'EXPORT_CSV_CUSTOM_DELIMITER', 'ENABLE_QUERY_TAGS', 'RESTRICT_BASE_UI', 'CERTIFY_PARENT_OBJECTS']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TIMEZONE', 'ACTIVE_THEME', 'ACTIVE_COLOR_PALETTE', 'ACTIVE_LLM_ENDPOINT', 'ACTIVE_LLM_PROVIDER', 'ACTIVE_CALENDARS', 'WHITE_LABELING', 'LOCALE', 'METADATA_LOCALE', 'FORMAT_LOCALE', 'MAPBOX_TOKEN', 'AG_GRID_TOKEN', 'WEEK_START', 'FISCAL_YEAR', 'SHOW_HIDDEN_CATALOG_ITEMS', 'OPERATOR_OVERRIDES', 'TIMEZONE_VALIDATION_ENABLED', 'OPENAI_CONFIG', 'ENABLE_FILE_ANALYTICS', 'ALERT', 'SEPARATORS', 'DATE_FILTER_CONFIG', 'JIT_PROVISIONING', 'JWT_JIT_PROVISIONING', 'DASHBOARD_FILTERS_APPLY_MODE', 'ENABLE_SLIDES_EXPORT', 'ENABLE_SNAPSHOT_EXPORT', 'AI_RATE_LIMIT', 'ATTACHMENT_SIZE_LIMIT', 'ATTACHMENT_LINK_TTL', 'AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE', 'ENABLE_DRILL_TO_URL_BY_DEFAULT', 'ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS', 'ENABLE_AUTOMATION_EVALUATION_MODE', 'ENABLE_ACCESSIBILITY_MODE', 'REGISTERED_PLUGGABLE_APPLICATIONS', 'DATA_LOCALE', 'LDM_DEFAULT_LOCALE', 'EXPORT_RESULT_POLLING_TIMEOUT_SECONDS', 'MAX_ZOOM_LEVEL', 'SORT_CASE_SENSITIVE', 'METRIC_FORMAT_OVERRIDE', 'ENABLE_AI_ON_DATA', 'API_ENTITIES_DEFAULT_CONTENT_MEDIA_TYPE', 'ENABLE_NULL_JOINS', 'EXPORT_CSV_CUSTOM_DELIMITER', 'ENABLE_QUERY_TAGS', 'RESTRICT_BASE_UI', 'CERTIFY_PARENT_OBJECTS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeSetting from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeSetting from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_single_workspace_permission.py b/gooddata-api-client/gooddata_api_client/models/declarative_single_workspace_permission.py deleted file mode 100644 index 4c6f9c362..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_single_workspace_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeSingleWorkspacePermission(BaseModel): - """ - DeclarativeSingleWorkspacePermission - """ # noqa: E501 - assignee: AssigneeIdentifier - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["assignee", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeSingleWorkspacePermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeSingleWorkspacePermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None, - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_source_fact_reference.py b/gooddata-api-client/gooddata_api_client/models/declarative_source_fact_reference.py deleted file mode 100644 index c539306e8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_source_fact_reference.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.fact_identifier import FactIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeSourceFactReference(BaseModel): - """ - Aggregated awareness source fact reference. - """ # noqa: E501 - operation: StrictStr = Field(description="Aggregation operation.") - reference: FactIdentifier - __properties: ClassVar[List[str]] = ["operation", "reference"] - - @field_validator('operation') - def operation_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SUM', 'MIN', 'MAX']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUM', 'MIN', 'MAX')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeSourceFactReference from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of reference - if self.reference: - _dict['reference'] = self.reference.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeSourceFactReference from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "operation": obj.get("operation"), - "reference": FactIdentifier.from_dict(obj["reference"]) if obj.get("reference") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_table.py b/gooddata-api-client/gooddata_api_client/models/declarative_table.py deleted file mode 100644 index aa9f534ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_table.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_column import DeclarativeColumn -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeTable(BaseModel): - """ - A database table. - """ # noqa: E501 - columns: List[DeclarativeColumn] = Field(description="An array of physical columns") - id: Annotated[str, Field(strict=True)] = Field(description="Table id.") - name_prefix: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Table or view name prefix used in scan. Will be stripped when generating LDM.", alias="namePrefix") - path: List[StrictStr] = Field(description="Path to table.") - type: StrictStr = Field(description="Table type: TABLE or VIEW.") - __properties: ClassVar[List[str]] = ["columns", "id", "namePrefix", "path", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeTable from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in columns (list) - _items = [] - if self.columns: - for _item_columns in self.columns: - if _item_columns: - _items.append(_item_columns.to_dict()) - _dict['columns'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeTable from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columns": [DeclarativeColumn.from_dict(_item) for _item in obj["columns"]] if obj.get("columns") is not None else None, - "id": obj.get("id"), - "namePrefix": obj.get("namePrefix"), - "path": obj.get("path"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_tables.py b/gooddata-api-client/gooddata_api_client/models/declarative_tables.py deleted file mode 100644 index 793faa248..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_tables.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_table import DeclarativeTable -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeTables(BaseModel): - """ - A physical data model (PDM) tables. - """ # noqa: E501 - tables: List[DeclarativeTable] = Field(description="An array of physical database tables.") - __properties: ClassVar[List[str]] = ["tables"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeTables from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in tables (list) - _items = [] - if self.tables: - for _item_tables in self.tables: - if _item_tables: - _items.append(_item_tables.to_dict()) - _dict['tables'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeTables from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "tables": [DeclarativeTable.from_dict(_item) for _item in obj["tables"]] if obj.get("tables") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_theme.py b/gooddata-api-client/gooddata_api_client/models/declarative_theme.py deleted file mode 100644 index a47b1c6c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_theme.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeTheme(BaseModel): - """ - Theme and its properties. - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - id: StrictStr - name: Annotated[str, Field(strict=True, max_length=255)] - __properties: ClassVar[List[str]] = ["content", "id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeTheme from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeTheme from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user.py b/gooddata-api-client/gooddata_api_client/models/declarative_user.py deleted file mode 100644 index 8143525e1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user.py +++ /dev/null @@ -1,134 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_setting import DeclarativeSetting -from gooddata_api_client.models.declarative_user_group_identifier import DeclarativeUserGroupIdentifier -from gooddata_api_client.models.declarative_user_permission import DeclarativeUserPermission -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUser(BaseModel): - """ - A user and its properties - """ # noqa: E501 - auth_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User identification in the authentication manager.", alias="authId") - email: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User email address") - firstname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User first name") - id: Annotated[str, Field(strict=True)] = Field(description="User identifier.") - lastname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User last name") - permissions: Optional[List[DeclarativeUserPermission]] = None - settings: Optional[List[DeclarativeSetting]] = Field(default=None, description="A list of user settings.") - user_groups: Optional[List[DeclarativeUserGroupIdentifier]] = Field(default=None, alias="userGroups") - __properties: ClassVar[List[str]] = ["authId", "email", "firstname", "id", "lastname", "permissions", "settings", "userGroups"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUser from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in settings (list) - _items = [] - if self.settings: - for _item_settings in self.settings: - if _item_settings: - _items.append(_item_settings.to_dict()) - _dict['settings'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUser from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "authId": obj.get("authId"), - "email": obj.get("email"), - "firstname": obj.get("firstname"), - "id": obj.get("id"), - "lastname": obj.get("lastname"), - "permissions": [DeclarativeUserPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, - "settings": [DeclarativeSetting.from_dict(_item) for _item in obj["settings"]] if obj.get("settings") is not None else None, - "userGroups": [DeclarativeUserGroupIdentifier.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_data_filter.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_data_filter.py deleted file mode 100644 index 2b55138a6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_data_filter.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_group_identifier import DeclarativeUserGroupIdentifier -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserDataFilter(BaseModel): - """ - User Data Filters serving the filtering of what data users can see in workspaces. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="User Data Filters setting description.") - id: Annotated[str, Field(strict=True)] = Field(description="User Data Filters ID. This ID is further used to refer to this instance.") - maql: Annotated[str, Field(strict=True, max_length=10000)] = Field(description="Expression in MAQL specifying the User Data Filter") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="User Data Filters setting title.") - user: Optional[DeclarativeUserIdentifier] = None - user_group: Optional[DeclarativeUserGroupIdentifier] = Field(default=None, alias="userGroup") - __properties: ClassVar[List[str]] = ["description", "id", "maql", "tags", "title", "user", "userGroup"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserDataFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of user - if self.user: - _dict['user'] = self.user.to_dict() - # override the default output from pydantic by calling `to_dict()` of user_group - if self.user_group: - _dict['userGroup'] = self.user_group.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserDataFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "id": obj.get("id"), - "maql": obj.get("maql"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "user": DeclarativeUserIdentifier.from_dict(obj["user"]) if obj.get("user") is not None else None, - "userGroup": DeclarativeUserGroupIdentifier.from_dict(obj["userGroup"]) if obj.get("userGroup") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_data_filters.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_data_filters.py deleted file mode 100644 index f51158aee..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_data_filters.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_user_data_filter import DeclarativeUserDataFilter -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserDataFilters(BaseModel): - """ - Declarative form of user data filters. - """ # noqa: E501 - user_data_filters: List[DeclarativeUserDataFilter] = Field(alias="userDataFilters") - __properties: ClassVar[List[str]] = ["userDataFilters"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserDataFilters from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in user_data_filters (list) - _items = [] - if self.user_data_filters: - for _item_user_data_filters in self.user_data_filters: - if _item_user_data_filters: - _items.append(_item_user_data_filters.to_dict()) - _dict['userDataFilters'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserDataFilters from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "userDataFilters": [DeclarativeUserDataFilter.from_dict(_item) for _item in obj["userDataFilters"]] if obj.get("userDataFilters") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_group.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_group.py deleted file mode 100644 index c1332b02d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_group.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_group_identifier import DeclarativeUserGroupIdentifier -from gooddata_api_client.models.declarative_user_group_permission import DeclarativeUserGroupPermission -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserGroup(BaseModel): - """ - A user-group and its properties - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="UserGroup identifier.") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of UserGroup") - parents: Optional[List[DeclarativeUserGroupIdentifier]] = None - permissions: Optional[List[DeclarativeUserGroupPermission]] = None - __properties: ClassVar[List[str]] = ["id", "name", "parents", "permissions"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserGroup from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in parents (list) - _items = [] - if self.parents: - for _item_parents in self.parents: - if _item_parents: - _items.append(_item_parents.to_dict()) - _dict['parents'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserGroup from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name"), - "parents": [DeclarativeUserGroupIdentifier.from_dict(_item) for _item in obj["parents"]] if obj.get("parents") is not None else None, - "permissions": [DeclarativeUserGroupPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_group_identifier.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_group_identifier.py deleted file mode 100644 index 2a155247f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_group_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserGroupIdentifier(BaseModel): - """ - A user group identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of the user group.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserGroupIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserGroupIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_group_permission.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_group_permission.py deleted file mode 100644 index 24fd8a656..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_group_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserGroupPermission(BaseModel): - """ - Definition of a user-group permission assigned to a user/user-group. - """ # noqa: E501 - assignee: AssigneeIdentifier - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["assignee", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SEE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SEE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserGroupPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserGroupPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None, - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_group_permissions.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_group_permissions.py deleted file mode 100644 index 3fbfa6a09..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_group_permissions.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_user_group_permission import DeclarativeUserGroupPermission -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserGroupPermissions(BaseModel): - """ - Definition of permissions associated with a user-group. - """ # noqa: E501 - permissions: Optional[List[DeclarativeUserGroupPermission]] = None - __properties: ClassVar[List[str]] = ["permissions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserGroupPermissions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserGroupPermissions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": [DeclarativeUserGroupPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_groups.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_groups.py deleted file mode 100644 index b9fa1ff6e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_groups.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_user_group import DeclarativeUserGroup -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserGroups(BaseModel): - """ - Declarative form of userGroups and its properties. - """ # noqa: E501 - user_groups: List[DeclarativeUserGroup] = Field(alias="userGroups") - __properties: ClassVar[List[str]] = ["userGroups"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserGroups from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserGroups from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "userGroups": [DeclarativeUserGroup.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_identifier.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_identifier.py deleted file mode 100644 index b066a28a4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserIdentifier(BaseModel): - """ - A user identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="User identifier.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_permission.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_permission.py deleted file mode 100644 index 1202dbdd3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserPermission(BaseModel): - """ - Definition of a user permission assigned to a user/user-group. - """ # noqa: E501 - assignee: AssigneeIdentifier - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["assignee", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SEE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SEE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None, - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_user_permissions.py b/gooddata-api-client/gooddata_api_client/models/declarative_user_permissions.py deleted file mode 100644 index fb53ca81c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_user_permissions.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_user_permission import DeclarativeUserPermission -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUserPermissions(BaseModel): - """ - Definition of permissions associated with a user. - """ # noqa: E501 - permissions: Optional[List[DeclarativeUserPermission]] = None - __properties: ClassVar[List[str]] = ["permissions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUserPermissions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUserPermissions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": [DeclarativeUserPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_users.py b/gooddata-api-client/gooddata_api_client/models/declarative_users.py deleted file mode 100644 index a708f7497..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_users.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_user import DeclarativeUser -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUsers(BaseModel): - """ - Declarative form of users and its properties. - """ # noqa: E501 - users: List[DeclarativeUser] - __properties: ClassVar[List[str]] = ["users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUsers from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUsers from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "users": [DeclarativeUser.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_users_user_groups.py b/gooddata-api-client/gooddata_api_client/models/declarative_users_user_groups.py deleted file mode 100644 index 87a11b684..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_users_user_groups.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_user import DeclarativeUser -from gooddata_api_client.models.declarative_user_group import DeclarativeUserGroup -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeUsersUserGroups(BaseModel): - """ - Declarative form of both users and user groups and theirs properties. - """ # noqa: E501 - user_groups: List[DeclarativeUserGroup] = Field(alias="userGroups") - users: List[DeclarativeUser] - __properties: ClassVar[List[str]] = ["userGroups", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeUsersUserGroups from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeUsersUserGroups from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "userGroups": [DeclarativeUserGroup.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None, - "users": [DeclarativeUser.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_visualization_object.py b/gooddata-api-client/gooddata_api_client/models/declarative_visualization_object.py deleted file mode 100644 index 2458e3746..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_visualization_object.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_user_identifier import DeclarativeUserIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeVisualizationObject(BaseModel): - """ - DeclarativeVisualizationObject - """ # noqa: E501 - certification: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - certification_message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.", alias="certificationMessage") - certified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time when the certification was set.", alias="certifiedAt") - certified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="certifiedBy") - content: Optional[Dict[str, Any]] = Field(description="Free-form JSON object") - created_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - created_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="createdBy") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Visualization object description.") - id: Annotated[str, Field(strict=True)] = Field(description="Visualization object ID.") - is_hidden: Optional[StrictBool] = Field(default=None, description="If true, this visualization object is hidden from AI search results.", alias="isHidden") - modified_at: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - modified_by: Optional[DeclarativeUserIdentifier] = Field(default=None, alias="modifiedBy") - tags: Optional[List[StrictStr]] = Field(default=None, description="A list of tags.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Visualization object title.") - __properties: ClassVar[List[str]] = ["certification", "certificationMessage", "certifiedAt", "certifiedBy", "content", "createdAt", "createdBy", "description", "id", "isHidden", "modifiedAt", "modifiedBy", "tags", "title"] - - @field_validator('certification') - def certification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('certified_at') - def certified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeVisualizationObject from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of certified_by - if self.certified_by: - _dict['certifiedBy'] = self.certified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # set to None if certification_message (nullable) is None - # and model_fields_set contains the field - if self.certification_message is None and "certification_message" in self.model_fields_set: - _dict['certificationMessage'] = None - - # set to None if certified_at (nullable) is None - # and model_fields_set contains the field - if self.certified_at is None and "certified_at" in self.model_fields_set: - _dict['certifiedAt'] = None - - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeVisualizationObject from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "certification": obj.get("certification"), - "certificationMessage": obj.get("certificationMessage"), - "certifiedAt": obj.get("certifiedAt"), - "certifiedBy": DeclarativeUserIdentifier.from_dict(obj["certifiedBy"]) if obj.get("certifiedBy") is not None else None, - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "createdBy": DeclarativeUserIdentifier.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "description": obj.get("description"), - "id": obj.get("id"), - "isHidden": obj.get("isHidden"), - "modifiedAt": obj.get("modifiedAt"), - "modifiedBy": DeclarativeUserIdentifier.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace.py deleted file mode 100644 index d28dd04b5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace.py +++ /dev/null @@ -1,206 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_automation import DeclarativeAutomation -from gooddata_api_client.models.declarative_custom_application_setting import DeclarativeCustomApplicationSetting -from gooddata_api_client.models.declarative_filter_view import DeclarativeFilterView -from gooddata_api_client.models.declarative_setting import DeclarativeSetting -from gooddata_api_client.models.declarative_single_workspace_permission import DeclarativeSingleWorkspacePermission -from gooddata_api_client.models.declarative_user_data_filter import DeclarativeUserDataFilter -from gooddata_api_client.models.declarative_workspace_hierarchy_permission import DeclarativeWorkspaceHierarchyPermission -from gooddata_api_client.models.declarative_workspace_model import DeclarativeWorkspaceModel -from gooddata_api_client.models.workspace_data_source import WorkspaceDataSource -from gooddata_api_client.models.workspace_identifier import WorkspaceIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspace(BaseModel): - """ - A declarative form of a particular workspace. - """ # noqa: E501 - automations: Optional[List[DeclarativeAutomation]] = None - cache_extra_limit: Optional[StrictInt] = Field(default=None, description="Extra cache limit allocated to specific workspace. In case there is extra cache budget setup for organization, it can be split between multiple workspaces.", alias="cacheExtraLimit") - custom_application_settings: Optional[List[DeclarativeCustomApplicationSetting]] = Field(default=None, description="A list of workspace custom settings.", alias="customApplicationSettings") - data_source: Optional[WorkspaceDataSource] = Field(default=None, alias="dataSource") - description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Description of the workspace") - early_access: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Early access defined on level Workspace", alias="earlyAccess") - early_access_values: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="Early access defined on level Workspace", alias="earlyAccessValues") - filter_views: Optional[List[DeclarativeFilterView]] = Field(default=None, alias="filterViews") - hierarchy_permissions: Optional[List[DeclarativeWorkspaceHierarchyPermission]] = Field(default=None, alias="hierarchyPermissions") - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of a workspace") - model: Optional[DeclarativeWorkspaceModel] = None - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Name of a workspace to view.") - parent: Optional[WorkspaceIdentifier] = None - permissions: Optional[List[DeclarativeSingleWorkspacePermission]] = None - prefix: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom prefix of entity identifiers in workspace") - settings: Optional[List[DeclarativeSetting]] = Field(default=None, description="A list of workspace settings.") - user_data_filters: Optional[List[DeclarativeUserDataFilter]] = Field(default=None, description="A list of workspace user data filters.", alias="userDataFilters") - __properties: ClassVar[List[str]] = ["automations", "cacheExtraLimit", "customApplicationSettings", "dataSource", "description", "earlyAccess", "earlyAccessValues", "filterViews", "hierarchyPermissions", "id", "model", "name", "parent", "permissions", "prefix", "settings", "userDataFilters"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('prefix') - def prefix_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspace from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in automations (list) - _items = [] - if self.automations: - for _item_automations in self.automations: - if _item_automations: - _items.append(_item_automations.to_dict()) - _dict['automations'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in custom_application_settings (list) - _items = [] - if self.custom_application_settings: - for _item_custom_application_settings in self.custom_application_settings: - if _item_custom_application_settings: - _items.append(_item_custom_application_settings.to_dict()) - _dict['customApplicationSettings'] = _items - # override the default output from pydantic by calling `to_dict()` of data_source - if self.data_source: - _dict['dataSource'] = self.data_source.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in filter_views (list) - _items = [] - if self.filter_views: - for _item_filter_views in self.filter_views: - if _item_filter_views: - _items.append(_item_filter_views.to_dict()) - _dict['filterViews'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in hierarchy_permissions (list) - _items = [] - if self.hierarchy_permissions: - for _item_hierarchy_permissions in self.hierarchy_permissions: - if _item_hierarchy_permissions: - _items.append(_item_hierarchy_permissions.to_dict()) - _dict['hierarchyPermissions'] = _items - # override the default output from pydantic by calling `to_dict()` of model - if self.model: - _dict['model'] = self.model.to_dict() - # override the default output from pydantic by calling `to_dict()` of parent - if self.parent: - _dict['parent'] = self.parent.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in settings (list) - _items = [] - if self.settings: - for _item_settings in self.settings: - if _item_settings: - _items.append(_item_settings.to_dict()) - _dict['settings'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in user_data_filters (list) - _items = [] - if self.user_data_filters: - for _item_user_data_filters in self.user_data_filters: - if _item_user_data_filters: - _items.append(_item_user_data_filters.to_dict()) - _dict['userDataFilters'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspace from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "automations": [DeclarativeAutomation.from_dict(_item) for _item in obj["automations"]] if obj.get("automations") is not None else None, - "cacheExtraLimit": obj.get("cacheExtraLimit"), - "customApplicationSettings": [DeclarativeCustomApplicationSetting.from_dict(_item) for _item in obj["customApplicationSettings"]] if obj.get("customApplicationSettings") is not None else None, - "dataSource": WorkspaceDataSource.from_dict(obj["dataSource"]) if obj.get("dataSource") is not None else None, - "description": obj.get("description"), - "earlyAccess": obj.get("earlyAccess"), - "earlyAccessValues": obj.get("earlyAccessValues"), - "filterViews": [DeclarativeFilterView.from_dict(_item) for _item in obj["filterViews"]] if obj.get("filterViews") is not None else None, - "hierarchyPermissions": [DeclarativeWorkspaceHierarchyPermission.from_dict(_item) for _item in obj["hierarchyPermissions"]] if obj.get("hierarchyPermissions") is not None else None, - "id": obj.get("id"), - "model": DeclarativeWorkspaceModel.from_dict(obj["model"]) if obj.get("model") is not None else None, - "name": obj.get("name"), - "parent": WorkspaceIdentifier.from_dict(obj["parent"]) if obj.get("parent") is not None else None, - "permissions": [DeclarativeSingleWorkspacePermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, - "prefix": obj.get("prefix"), - "settings": [DeclarativeSetting.from_dict(_item) for _item in obj["settings"]] if obj.get("settings") is not None else None, - "userDataFilters": [DeclarativeUserDataFilter.from_dict(_item) for _item in obj["userDataFilters"]] if obj.get("userDataFilters") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter.py deleted file mode 100644 index 968055574..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.declarative_workspace_data_filter_setting import DeclarativeWorkspaceDataFilterSetting -from gooddata_api_client.models.workspace_identifier import WorkspaceIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceDataFilter(BaseModel): - """ - Workspace Data Filters serving the filtering of what data users can see in workspaces. - """ # noqa: E501 - column_name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Workspace Data Filters column name. Data are filtered using this physical column.", alias="columnName") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Workspace Data Filters description.") - id: Annotated[str, Field(strict=True)] = Field(description="Workspace Data Filters ID. This ID is further used to refer to this instance.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Workspace Data Filters title.") - workspace: WorkspaceIdentifier - workspace_data_filter_settings: List[DeclarativeWorkspaceDataFilterSetting] = Field(description="Filter settings specifying values of filters valid for the workspace.", alias="workspaceDataFilterSettings") - __properties: ClassVar[List[str]] = ["columnName", "description", "id", "title", "workspace", "workspaceDataFilterSettings"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of workspace - if self.workspace: - _dict['workspace'] = self.workspace.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filter_settings (list) - _items = [] - if self.workspace_data_filter_settings: - for _item_workspace_data_filter_settings in self.workspace_data_filter_settings: - if _item_workspace_data_filter_settings: - _items.append(_item_workspace_data_filter_settings.to_dict()) - _dict['workspaceDataFilterSettings'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columnName": obj.get("columnName"), - "description": obj.get("description"), - "id": obj.get("id"), - "title": obj.get("title"), - "workspace": WorkspaceIdentifier.from_dict(obj["workspace"]) if obj.get("workspace") is not None else None, - "workspaceDataFilterSettings": [DeclarativeWorkspaceDataFilterSetting.from_dict(_item) for _item in obj["workspaceDataFilterSettings"]] if obj.get("workspaceDataFilterSettings") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_column.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_column.py deleted file mode 100644 index 491d7f630..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_column.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceDataFilterColumn(BaseModel): - """ - DeclarativeWorkspaceDataFilterColumn - """ # noqa: E501 - data_type: StrictStr = Field(description="Data type of the column", alias="dataType") - name: StrictStr = Field(description="Name of the column") - __properties: ClassVar[List[str]] = ["dataType", "name"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilterColumn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilterColumn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataType": obj.get("dataType"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_references.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_references.py deleted file mode 100644 index 027644cf0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_references.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dataset_workspace_data_filter_identifier import DatasetWorkspaceDataFilterIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceDataFilterReferences(BaseModel): - """ - DeclarativeWorkspaceDataFilterReferences - """ # noqa: E501 - filter_column: StrictStr = Field(description="Filter column name", alias="filterColumn") - filter_column_data_type: StrictStr = Field(description="Filter column data type", alias="filterColumnDataType") - filter_id: DatasetWorkspaceDataFilterIdentifier = Field(alias="filterId") - __properties: ClassVar[List[str]] = ["filterColumn", "filterColumnDataType", "filterId"] - - @field_validator('filter_column_data_type') - def filter_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilterReferences from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of filter_id - if self.filter_id: - _dict['filterId'] = self.filter_id.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilterReferences from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filterColumn": obj.get("filterColumn"), - "filterColumnDataType": obj.get("filterColumnDataType"), - "filterId": DatasetWorkspaceDataFilterIdentifier.from_dict(obj["filterId"]) if obj.get("filterId") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_setting.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_setting.py deleted file mode 100644 index 9d9f683bd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filter_setting.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.workspace_identifier import WorkspaceIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceDataFilterSetting(BaseModel): - """ - Workspace Data Filters serving the filtering of what data users can see in workspaces. - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Workspace Data Filters setting description.") - filter_values: List[StrictStr] = Field(description="Only those rows are returned, where columnName from filter matches those values.", alias="filterValues") - id: Annotated[str, Field(strict=True)] = Field(description="Workspace Data Filters ID. This ID is further used to refer to this instance.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Workspace Data Filters setting title.") - workspace: WorkspaceIdentifier - __properties: ClassVar[List[str]] = ["description", "filterValues", "id", "title", "workspace"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilterSetting from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of workspace - if self.workspace: - _dict['workspace'] = self.workspace.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilterSetting from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "filterValues": obj.get("filterValues"), - "id": obj.get("id"), - "title": obj.get("title"), - "workspace": WorkspaceIdentifier.from_dict(obj["workspace"]) if obj.get("workspace") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filters.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filters.py deleted file mode 100644 index cbbe9a3f7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_data_filters.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_workspace_data_filter import DeclarativeWorkspaceDataFilter -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceDataFilters(BaseModel): - """ - Declarative form of data filters. - """ # noqa: E501 - workspace_data_filters: List[DeclarativeWorkspaceDataFilter] = Field(alias="workspaceDataFilters") - __properties: ClassVar[List[str]] = ["workspaceDataFilters"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilters from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filters (list) - _items = [] - if self.workspace_data_filters: - for _item_workspace_data_filters in self.workspace_data_filters: - if _item_workspace_data_filters: - _items.append(_item_workspace_data_filters.to_dict()) - _dict['workspaceDataFilters'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceDataFilters from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "workspaceDataFilters": [DeclarativeWorkspaceDataFilter.from_dict(_item) for _item in obj["workspaceDataFilters"]] if obj.get("workspaceDataFilters") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_hierarchy_permission.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_hierarchy_permission.py deleted file mode 100644 index c119ebf6a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_hierarchy_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceHierarchyPermission(BaseModel): - """ - DeclarativeWorkspaceHierarchyPermission - """ # noqa: E501 - assignee: AssigneeIdentifier - name: StrictStr = Field(description="Permission name.") - __properties: ClassVar[List[str]] = ["assignee", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceHierarchyPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee - if self.assignee: - _dict['assignee'] = self.assignee.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceHierarchyPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignee": AssigneeIdentifier.from_dict(obj["assignee"]) if obj.get("assignee") is not None else None, - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_model.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_model.py deleted file mode 100644 index 806c585b2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_model.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_analytics_layer import DeclarativeAnalyticsLayer -from gooddata_api_client.models.declarative_ldm import DeclarativeLdm -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaceModel(BaseModel): - """ - A declarative form of a model and analytics for a workspace. - """ # noqa: E501 - analytics: Optional[DeclarativeAnalyticsLayer] = None - ldm: Optional[DeclarativeLdm] = None - __properties: ClassVar[List[str]] = ["analytics", "ldm"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceModel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytics - if self.analytics: - _dict['analytics'] = self.analytics.to_dict() - # override the default output from pydantic by calling `to_dict()` of ldm - if self.ldm: - _dict['ldm'] = self.ldm.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaceModel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analytics": DeclarativeAnalyticsLayer.from_dict(obj["analytics"]) if obj.get("analytics") is not None else None, - "ldm": DeclarativeLdm.from_dict(obj["ldm"]) if obj.get("ldm") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_permissions.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspace_permissions.py deleted file mode 100644 index 1ae36d203..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspace_permissions.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_single_workspace_permission import DeclarativeSingleWorkspacePermission -from gooddata_api_client.models.declarative_workspace_hierarchy_permission import DeclarativeWorkspaceHierarchyPermission -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspacePermissions(BaseModel): - """ - Definition of permissions associated with a workspace. - """ # noqa: E501 - hierarchy_permissions: Optional[List[DeclarativeWorkspaceHierarchyPermission]] = Field(default=None, alias="hierarchyPermissions") - permissions: Optional[List[DeclarativeSingleWorkspacePermission]] = None - __properties: ClassVar[List[str]] = ["hierarchyPermissions", "permissions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspacePermissions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in hierarchy_permissions (list) - _items = [] - if self.hierarchy_permissions: - for _item_hierarchy_permissions in self.hierarchy_permissions: - if _item_hierarchy_permissions: - _items.append(_item_hierarchy_permissions.to_dict()) - _dict['hierarchyPermissions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspacePermissions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "hierarchyPermissions": [DeclarativeWorkspaceHierarchyPermission.from_dict(_item) for _item in obj["hierarchyPermissions"]] if obj.get("hierarchyPermissions") is not None else None, - "permissions": [DeclarativeSingleWorkspacePermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/declarative_workspaces.py b/gooddata-api-client/gooddata_api_client/models/declarative_workspaces.py deleted file mode 100644 index 11857ecd2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/declarative_workspaces.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_workspace import DeclarativeWorkspace -from gooddata_api_client.models.declarative_workspace_data_filter import DeclarativeWorkspaceDataFilter -from typing import Optional, Set -from typing_extensions import Self - -class DeclarativeWorkspaces(BaseModel): - """ - A declarative form of a all workspace layout. - """ # noqa: E501 - workspace_data_filters: List[DeclarativeWorkspaceDataFilter] = Field(alias="workspaceDataFilters") - workspaces: List[DeclarativeWorkspace] - __properties: ClassVar[List[str]] = ["workspaceDataFilters", "workspaces"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaces from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filters (list) - _items = [] - if self.workspace_data_filters: - for _item_workspace_data_filters in self.workspace_data_filters: - if _item_workspace_data_filters: - _items.append(_item_workspace_data_filters.to_dict()) - _dict['workspaceDataFilters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspaces (list) - _items = [] - if self.workspaces: - for _item_workspaces in self.workspaces: - if _item_workspaces: - _items.append(_item_workspaces.to_dict()) - _dict['workspaces'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeclarativeWorkspaces from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "workspaceDataFilters": [DeclarativeWorkspaceDataFilter.from_dict(_item) for _item in obj["workspaceDataFilters"]] if obj.get("workspaceDataFilters") is not None else None, - "workspaces": [DeclarativeWorkspace.from_dict(_item) for _item in obj["workspaces"]] if obj.get("workspaces") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/default_smtp.py b/gooddata-api-client/gooddata_api_client/models/default_smtp.py deleted file mode 100644 index c6bfffc47..000000000 --- a/gooddata-api-client/gooddata_api_client/models/default_smtp.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class DefaultSmtp(BaseModel): - """ - Default SMTP destination for notifications. - """ # noqa: E501 - from_email: Optional[StrictStr] = Field(default='no-reply@gooddata.com', description="E-mail address to send notifications from. Currently this does not have any effect. E-mail 'no-reply@gooddata.com' is used instead.", alias="fromEmail") - from_email_name: Optional[StrictStr] = Field(default='GoodData', description="An optional e-mail name to send notifications from. Currently this does not have any effect. E-mail from name 'GoodData' is used instead.", alias="fromEmailName") - type: StrictStr = Field(description="The destination type.") - __properties: ClassVar[List[str]] = ["fromEmail", "fromEmailName", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['DEFAULT_SMTP']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DEFAULT_SMTP')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DefaultSmtp from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DefaultSmtp from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "fromEmail": obj.get("fromEmail") if obj.get("fromEmail") is not None else 'no-reply@gooddata.com', - "fromEmailName": obj.get("fromEmailName") if obj.get("fromEmailName") is not None else 'GoodData', - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/delete_knowledge_document_response_dto.py b/gooddata-api-client/gooddata_api_client/models/delete_knowledge_document_response_dto.py deleted file mode 100644 index cc284dbb1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/delete_knowledge_document_response_dto.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DeleteKnowledgeDocumentResponseDto(BaseModel): - """ - DeleteKnowledgeDocumentResponseDto - """ # noqa: E501 - message: StrictStr - success: StrictBool - __properties: ClassVar[List[str]] = ["message", "success"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DeleteKnowledgeDocumentResponseDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DeleteKnowledgeDocumentResponseDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "message": obj.get("message"), - "success": obj.get("success") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dependent_entities_graph.py b/gooddata-api-client/gooddata_api_client/models/dependent_entities_graph.py deleted file mode 100644 index fbaf249c9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dependent_entities_graph.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dependent_entities_node import DependentEntitiesNode -from gooddata_api_client.models.entity_identifier import EntityIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DependentEntitiesGraph(BaseModel): - """ - DependentEntitiesGraph - """ # noqa: E501 - edges: List[List[EntityIdentifier]] - nodes: List[DependentEntitiesNode] - __properties: ClassVar[List[str]] = ["edges", "nodes"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DependentEntitiesGraph from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in edges (list of list) - _items = [] - if self.edges: - for _item_edges in self.edges: - if _item_edges: - _items.append( - [_inner_item.to_dict() for _inner_item in _item_edges if _inner_item is not None] - ) - _dict['edges'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in nodes (list) - _items = [] - if self.nodes: - for _item_nodes in self.nodes: - if _item_nodes: - _items.append(_item_nodes.to_dict()) - _dict['nodes'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DependentEntitiesGraph from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "edges": [ - [EntityIdentifier.from_dict(_inner_item) for _inner_item in _item] - for _item in obj["edges"] - ] if obj.get("edges") is not None else None, - "nodes": [DependentEntitiesNode.from_dict(_item) for _item in obj["nodes"]] if obj.get("nodes") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dependent_entities_node.py b/gooddata-api-client/gooddata_api_client/models/dependent_entities_node.py deleted file mode 100644 index c92d37cf3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dependent_entities_node.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class DependentEntitiesNode(BaseModel): - """ - DependentEntitiesNode - """ # noqa: E501 - id: StrictStr - title: Optional[StrictStr] = None - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "title", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard', 'attribute', 'attributeHierarchy', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'userDataFilter', 'automation', 'memoryItem', 'knowledgeRecommendation', 'visualizationObject', 'filterContext', 'filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard', 'attribute', 'attributeHierarchy', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'userDataFilter', 'automation', 'memoryItem', 'knowledgeRecommendation', 'visualizationObject', 'filterContext', 'filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DependentEntitiesNode from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DependentEntitiesNode from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dependent_entities_request.py b/gooddata-api-client/gooddata_api_client/models/dependent_entities_request.py deleted file mode 100644 index 6557c1301..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dependent_entities_request.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.entity_identifier import EntityIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class DependentEntitiesRequest(BaseModel): - """ - DependentEntitiesRequest - """ # noqa: E501 - identifiers: List[EntityIdentifier] - relation: Optional[StrictStr] = Field(default='DEPENDENTS', description="Entity relation for graph traversal from the entry points. DEPENDENTS returns entities that depend on the entry points. DEPENDENCIES returns entities that the entry points depend on.") - __properties: ClassVar[List[str]] = ["identifiers", "relation"] - - @field_validator('relation') - def relation_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DEPENDENTS', 'DEPENDENCIES']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DEPENDENTS', 'DEPENDENCIES')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DependentEntitiesRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in identifiers (list) - _items = [] - if self.identifiers: - for _item_identifiers in self.identifiers: - if _item_identifiers: - _items.append(_item_identifiers.to_dict()) - _dict['identifiers'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DependentEntitiesRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifiers": [EntityIdentifier.from_dict(_item) for _item in obj["identifiers"]] if obj.get("identifiers") is not None else None, - "relation": obj.get("relation") if obj.get("relation") is not None else 'DEPENDENTS' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dependent_entities_response.py b/gooddata-api-client/gooddata_api_client/models/dependent_entities_response.py deleted file mode 100644 index 28c869f88..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dependent_entities_response.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dependent_entities_graph import DependentEntitiesGraph -from typing import Optional, Set -from typing_extensions import Self - -class DependentEntitiesResponse(BaseModel): - """ - DependentEntitiesResponse - """ # noqa: E501 - graph: DependentEntitiesGraph - __properties: ClassVar[List[str]] = ["graph"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DependentEntitiesResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of graph - if self.graph: - _dict['graph'] = self.graph.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DependentEntitiesResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "graph": DependentEntitiesGraph.from_dict(obj["graph"]) if obj.get("graph") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/depends_on.py b/gooddata-api-client/gooddata_api_client/models/depends_on.py deleted file mode 100644 index 2381ff489..000000000 --- a/gooddata-api-client/gooddata_api_client/models/depends_on.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class DependsOn(BaseModel): - """ - Filter definition type specified by label and values. - """ # noqa: E501 - complement_filter: Optional[StrictBool] = Field(default=False, description="Inverse filtering mode.", alias="complementFilter") - label: StrictStr = Field(description="Specifies on which label the filter depends on.") - values: List[Optional[StrictStr]] = Field(description="Specifies values of the label for element filtering.") - __properties: ClassVar[List[str]] = ["complementFilter", "label", "values"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DependsOn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DependsOn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "complementFilter": obj.get("complementFilter") if obj.get("complementFilter") is not None else False, - "label": obj.get("label"), - "values": obj.get("values") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/depends_on_date_filter.py b/gooddata-api-client/gooddata_api_client/models/depends_on_date_filter.py deleted file mode 100644 index 20c48ee60..000000000 --- a/gooddata-api-client/gooddata_api_client/models/depends_on_date_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.date_filter import DateFilter -from typing import Optional, Set -from typing_extensions import Self - -class DependsOnDateFilter(BaseModel): - """ - Filter definition type for dates. - """ # noqa: E501 - date_filter: DateFilter = Field(alias="dateFilter") - __properties: ClassVar[List[str]] = ["dateFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DependsOnDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of date_filter - if self.date_filter: - _dict['dateFilter'] = self.date_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DependsOnDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dateFilter": DateFilter.from_dict(obj["dateFilter"]) if obj.get("dateFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dim_attribute.py b/gooddata-api-client/gooddata_api_client/models/dim_attribute.py deleted file mode 100644 index b6c48b9a2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dim_attribute.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class DimAttribute(BaseModel): - """ - List of attributes representing the dimensionality of the new visualization - """ # noqa: E501 - id: StrictStr = Field(description="ID of the object") - title: StrictStr = Field(description="Title of attribute.") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["id", "title", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DimAttribute from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DimAttribute from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dimension.py b/gooddata-api-client/gooddata_api_client/models/dimension.py deleted file mode 100644 index 891889c90..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dimension.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.sort_key import SortKey -from typing import Optional, Set -from typing_extensions import Self - -class Dimension(BaseModel): - """ - Single dimension description. - """ # noqa: E501 - item_identifiers: List[StrictStr] = Field(description="List of items in current dimension. Can reference 'localIdentifier' from 'AttributeItem', or special pseudo attribute \"measureGroup\" representing list of metrics.", alias="itemIdentifiers") - local_identifier: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Dimension identification within requests. Other entities can reference this dimension by this value.", alias="localIdentifier") - sorting: Optional[List[SortKey]] = Field(default=None, description="List of sorting rules. From most relevant to least relevant (less relevant rule is applied, when more relevant rule compares items as equal).") - __properties: ClassVar[List[str]] = ["itemIdentifiers", "localIdentifier", "sorting"] - - @field_validator('local_identifier') - def local_identifier_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^[.a-zA-Z0-9_-]+$", value): - raise ValueError(r"must validate the regular expression /^[.a-zA-Z0-9_-]+$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Dimension from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in sorting (list) - _items = [] - if self.sorting: - for _item_sorting in self.sorting: - if _item_sorting: - _items.append(_item_sorting.to_dict()) - _dict['sorting'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Dimension from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "itemIdentifiers": obj.get("itemIdentifiers"), - "localIdentifier": obj.get("localIdentifier"), - "sorting": [SortKey.from_dict(_item) for _item in obj["sorting"]] if obj.get("sorting") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/dimension_header.py b/gooddata-api-client/gooddata_api_client/models/dimension_header.py deleted file mode 100644 index 616400c1e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/dimension_header.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.header_group import HeaderGroup -from typing import Optional, Set -from typing_extensions import Self - -class DimensionHeader(BaseModel): - """ - Contains the dimension-specific header information. - """ # noqa: E501 - header_groups: List[HeaderGroup] = Field(description="An array containing header groups.", alias="headerGroups") - __properties: ClassVar[List[str]] = ["headerGroups"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of DimensionHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in header_groups (list) - _items = [] - if self.header_groups: - for _item_header_groups in self.header_groups: - if _item_header_groups: - _items.append(_item_header_groups.to_dict()) - _dict['headerGroups'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of DimensionHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "headerGroups": [HeaderGroup.from_dict(_item) for _item in obj["headerGroups"]] if obj.get("headerGroups") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/element.py b/gooddata-api-client/gooddata_api_client/models/element.py deleted file mode 100644 index 68702129b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/element.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class Element(BaseModel): - """ - List of returned elements. - """ # noqa: E501 - primary_title: StrictStr = Field(description="Title of primary label of attribute owning requested label, null if the title is null or the primary label is excluded", alias="primaryTitle") - title: StrictStr = Field(description="Title of requested label.") - __properties: ClassVar[List[str]] = ["primaryTitle", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Element from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Element from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "primaryTitle": obj.get("primaryTitle"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/elements_request.py b/gooddata-api-client/gooddata_api_client/models/elements_request.py deleted file mode 100644 index deb1e71e6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/elements_request.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing_extensions import Annotated -from gooddata_api_client.models.elements_request_depends_on_inner import ElementsRequestDependsOnInner -from gooddata_api_client.models.filter_by import FilterBy -from gooddata_api_client.models.validate_by_item import ValidateByItem -from typing import Optional, Set -from typing_extensions import Self - -class ElementsRequest(BaseModel): - """ - ElementsRequest - """ # noqa: E501 - cache_id: Optional[StrictStr] = Field(default=None, description="If specified, the element data will be taken from the result with the same cacheId if it is available.", alias="cacheId") - complement_filter: Optional[StrictBool] = Field(default=False, description="Inverse filters: * ```false``` - return items matching ```patternFilter``` and ```exactFilter``` * ```true``` - return items not matching ```patternFilter``` and ```exactFilter```", alias="complementFilter") - data_sampling_percentage: Optional[Union[StrictFloat, StrictInt]] = Field(default=100.0, description="Specifies percentage of source table data scanned during the computation. This field is deprecated and is no longer used during the elements computation.", alias="dataSamplingPercentage") - depends_on: Optional[List[ElementsRequestDependsOnInner]] = Field(default=None, description="Return only items that are not filtered-out by the parent filters.", alias="dependsOn") - exact_filter: Optional[List[Optional[StrictStr]]] = Field(default=None, description="Return only items, whose ```label``` title exactly matches one of ```filter```.", alias="exactFilter") - exclude_primary_label: Optional[StrictBool] = Field(default=False, description="Excludes items from the result that differ only by primary label * ```false``` - return items with distinct primary label * ```true``` - return items with distinct requested label", alias="excludePrimaryLabel") - filter_by: Optional[FilterBy] = Field(default=None, alias="filterBy") - label: Annotated[str, Field(strict=True)] = Field(description="Requested label.") - pattern_filter: Optional[StrictStr] = Field(default=None, description="Return only items, whose ```label``` title case insensitively contains ```filter``` as substring.", alias="patternFilter") - sort_order: Optional[StrictStr] = Field(default=None, description="Sort order of returned items. Items are sorted by ```label``` title. If no sort order is specified then attribute's ```sortDirection``` is used, which is ASC by default", alias="sortOrder") - validate_by: Optional[List[Optional[ValidateByItem]]] = Field(default=None, description="Return only items that are computable on metric.", alias="validateBy") - __properties: ClassVar[List[str]] = ["cacheId", "complementFilter", "dataSamplingPercentage", "dependsOn", "exactFilter", "excludePrimaryLabel", "filterBy", "label", "patternFilter", "sortOrder", "validateBy"] - - @field_validator('label') - def label_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('sort_order') - def sort_order_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ElementsRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in depends_on (list) - _items = [] - if self.depends_on: - for _item_depends_on in self.depends_on: - if _item_depends_on: - _items.append(_item_depends_on.to_dict()) - _dict['dependsOn'] = _items - # override the default output from pydantic by calling `to_dict()` of filter_by - if self.filter_by: - _dict['filterBy'] = self.filter_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in validate_by (list) - _items = [] - if self.validate_by: - for _item_validate_by in self.validate_by: - if _item_validate_by: - _items.append(_item_validate_by.to_dict()) - _dict['validateBy'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ElementsRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "cacheId": obj.get("cacheId"), - "complementFilter": obj.get("complementFilter") if obj.get("complementFilter") is not None else False, - "dataSamplingPercentage": obj.get("dataSamplingPercentage") if obj.get("dataSamplingPercentage") is not None else 100.0, - "dependsOn": [ElementsRequestDependsOnInner.from_dict(_item) for _item in obj["dependsOn"]] if obj.get("dependsOn") is not None else None, - "exactFilter": obj.get("exactFilter"), - "excludePrimaryLabel": obj.get("excludePrimaryLabel") if obj.get("excludePrimaryLabel") is not None else False, - "filterBy": FilterBy.from_dict(obj["filterBy"]) if obj.get("filterBy") is not None else None, - "label": obj.get("label"), - "patternFilter": obj.get("patternFilter"), - "sortOrder": obj.get("sortOrder"), - "validateBy": [ValidateByItem.from_dict(_item) for _item in obj["validateBy"]] if obj.get("validateBy") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/elements_request_depends_on_inner.py b/gooddata-api-client/gooddata_api_client/models/elements_request_depends_on_inner.py deleted file mode 100644 index 2b59b855f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/elements_request_depends_on_inner.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.depends_on import DependsOn -from gooddata_api_client.models.depends_on_date_filter import DependsOnDateFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -ELEMENTSREQUESTDEPENDSONINNER_ONE_OF_SCHEMAS = ["DependsOn", "DependsOnDateFilter"] - -class ElementsRequestDependsOnInner(BaseModel): - """ - ElementsRequestDependsOnInner - """ - # data type: DependsOn - oneof_schema_1_validator: Optional[DependsOn] = None - # data type: DependsOnDateFilter - oneof_schema_2_validator: Optional[DependsOnDateFilter] = None - actual_instance: Optional[Union[DependsOn, DependsOnDateFilter]] = None - one_of_schemas: Set[str] = { "DependsOn", "DependsOnDateFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ElementsRequestDependsOnInner.model_construct() - error_messages = [] - match = 0 - # validate data type: DependsOn - if not isinstance(v, DependsOn): - error_messages.append(f"Error! Input type `{type(v)}` is not `DependsOn`") - else: - match += 1 - # validate data type: DependsOnDateFilter - if not isinstance(v, DependsOnDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `DependsOnDateFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ElementsRequestDependsOnInner with oneOf schemas: DependsOn, DependsOnDateFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DependsOn - try: - if match == 0: - instance.actual_instance = DependsOn.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into DependsOnDateFilter - try: - if match == 0: - instance.actual_instance = DependsOnDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ElementsRequestDependsOnInner with oneOf schemas: DependsOn, DependsOnDateFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DependsOn, DependsOnDateFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/elements_response.py b/gooddata-api-client/gooddata_api_client/models/elements_response.py deleted file mode 100644 index 802d1142a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/elements_response.py +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.attribute_format import AttributeFormat -from gooddata_api_client.models.element import Element -from gooddata_api_client.models.paging import Paging -from gooddata_api_client.models.rest_api_identifier import RestApiIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class ElementsResponse(BaseModel): - """ - Entity holding list of sorted & filtered label elements, related primary label of attribute owning requested label and paging. - """ # noqa: E501 - cache_id: Optional[StrictStr] = Field(default=None, description="The client can use this in subsequent requests (like paging or search) to get results from the same point in time as the previous request. This is useful when the underlying data source has caches disabled and the client wants to avoid seeing inconsistent results and to also avoid excessive queries to the database itself.", alias="cacheId") - elements: List[Element] = Field(description="List of returned elements.") - format: Optional[AttributeFormat] = None - granularity: Optional[StrictStr] = Field(default=None, description="Granularity of requested label in case of date attribute") - paging: Paging - primary_label: RestApiIdentifier = Field(alias="primaryLabel") - __properties: ClassVar[List[str]] = ["cacheId", "elements", "format", "granularity", "paging", "primaryLabel"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ElementsResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in elements (list) - _items = [] - if self.elements: - for _item_elements in self.elements: - if _item_elements: - _items.append(_item_elements.to_dict()) - _dict['elements'] = _items - # override the default output from pydantic by calling `to_dict()` of format - if self.format: - _dict['format'] = self.format.to_dict() - # override the default output from pydantic by calling `to_dict()` of paging - if self.paging: - _dict['paging'] = self.paging.to_dict() - # override the default output from pydantic by calling `to_dict()` of primary_label - if self.primary_label: - _dict['primaryLabel'] = self.primary_label.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ElementsResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "cacheId": obj.get("cacheId"), - "elements": [Element.from_dict(_item) for _item in obj["elements"]] if obj.get("elements") is not None else None, - "format": AttributeFormat.from_dict(obj["format"]) if obj.get("format") is not None else None, - "granularity": obj.get("granularity"), - "paging": Paging.from_dict(obj["paging"]) if obj.get("paging") is not None else None, - "primaryLabel": RestApiIdentifier.from_dict(obj["primaryLabel"]) if obj.get("primaryLabel") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/entitlements_request.py b/gooddata-api-client/gooddata_api_client/models/entitlements_request.py deleted file mode 100644 index e7183e53f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/entitlements_request.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class EntitlementsRequest(BaseModel): - """ - EntitlementsRequest - """ # noqa: E501 - entitlements_name: List[StrictStr] = Field(alias="entitlementsName") - __properties: ClassVar[List[str]] = ["entitlementsName"] - - @field_validator('entitlements_name') - def entitlements_name_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['CacheStrategy', 'Contract', 'CustomTheming', 'ExtraCache', 'Hipaa', 'PdfExports', 'UiLocalization', 'Tier', 'UserCount', 'ManagedIdpUserCount', 'UnlimitedUsers', 'UnlimitedWorkspaces', 'WhiteLabeling', 'WorkspaceCount', 'UserTelemetryDisabled', 'AutomationCount', 'UnlimitedAutomations', 'AutomationRecipientCount', 'UnlimitedAutomationRecipients', 'DailyScheduledActionCount', 'UnlimitedDailyScheduledActions', 'DailyAlertActionCount', 'UnlimitedDailyAlertActions', 'ScheduledActionMinimumRecurrenceMinutes', 'FederatedIdentityManagement', 'AuditLogging', 'ControlledFeatureRollout', 'AiLake']): - raise ValueError("each list item must be one of ('CacheStrategy', 'Contract', 'CustomTheming', 'ExtraCache', 'Hipaa', 'PdfExports', 'UiLocalization', 'Tier', 'UserCount', 'ManagedIdpUserCount', 'UnlimitedUsers', 'UnlimitedWorkspaces', 'WhiteLabeling', 'WorkspaceCount', 'UserTelemetryDisabled', 'AutomationCount', 'UnlimitedAutomations', 'AutomationRecipientCount', 'UnlimitedAutomationRecipients', 'DailyScheduledActionCount', 'UnlimitedDailyScheduledActions', 'DailyAlertActionCount', 'UnlimitedDailyAlertActions', 'ScheduledActionMinimumRecurrenceMinutes', 'FederatedIdentityManagement', 'AuditLogging', 'ControlledFeatureRollout', 'AiLake')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of EntitlementsRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of EntitlementsRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "entitlementsName": obj.get("entitlementsName") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/entity_identifier.py b/gooddata-api-client/gooddata_api_client/models/entity_identifier.py deleted file mode 100644 index 49e678e23..000000000 --- a/gooddata-api-client/gooddata_api_client/models/entity_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class EntityIdentifier(BaseModel): - """ - EntityIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Object identifier.") - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard', 'attribute', 'attributeHierarchy', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'userDataFilter', 'automation', 'knowledgeRecommendation', 'visualizationObject', 'filterContext', 'filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard', 'attribute', 'attributeHierarchy', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'userDataFilter', 'automation', 'knowledgeRecommendation', 'visualizationObject', 'filterContext', 'filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of EntityIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of EntityIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/entity_search_body.py b/gooddata-api-client/gooddata_api_client/models/entity_search_body.py deleted file mode 100644 index 2e1b9d477..000000000 --- a/gooddata-api-client/gooddata_api_client/models/entity_search_body.py +++ /dev/null @@ -1,128 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.entity_search_page import EntitySearchPage -from gooddata_api_client.models.entity_search_sort import EntitySearchSort -from typing import Optional, Set -from typing_extensions import Self - -class EntitySearchBody(BaseModel): - """ - Request body for entity search operations - """ # noqa: E501 - filter: Optional[StrictStr] = Field(default=None, description="Filtering parameter in RSQL. See https://github.com/jirutka/rsql-parser. You can specify any object parameter and parameter of related entity (for example title=='Some Title';description=='desc'). Additionally, if the entity relationship represents a polymorphic entity type, it can be casted to its subtypes (for example relatedEntity::subtype.subtypeProperty=='Value 123').") - include: Optional[List[StrictStr]] = Field(default=None, description="List of related entities to include in the response") - meta_include: Optional[List[StrictStr]] = Field(default=None, description="Set of metadata fields to include in the response", alias="metaInclude") - page: Optional[EntitySearchPage] = None - sort: Optional[List[EntitySearchSort]] = Field(default=None, description="Sorting criteria (can specify multiple sort orders)") - __properties: ClassVar[List[str]] = ["filter", "include", "metaInclude", "page", "sort"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of EntitySearchBody from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of page - if self.page: - _dict['page'] = self.page.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in sort (list) - _items = [] - if self.sort: - for _item_sort in self.sort: - if _item_sort: - _items.append(_item_sort.to_dict()) - _dict['sort'] = _items - # set to None if filter (nullable) is None - # and model_fields_set contains the field - if self.filter is None and "filter" in self.model_fields_set: - _dict['filter'] = None - - # set to None if include (nullable) is None - # and model_fields_set contains the field - if self.include is None and "include" in self.model_fields_set: - _dict['include'] = None - - # set to None if meta_include (nullable) is None - # and model_fields_set contains the field - if self.meta_include is None and "meta_include" in self.model_fields_set: - _dict['metaInclude'] = None - - # set to None if sort (nullable) is None - # and model_fields_set contains the field - if self.sort is None and "sort" in self.model_fields_set: - _dict['sort'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of EntitySearchBody from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filter": obj.get("filter"), - "include": obj.get("include"), - "metaInclude": obj.get("metaInclude"), - "page": EntitySearchPage.from_dict(obj["page"]) if obj.get("page") is not None else None, - "sort": [EntitySearchSort.from_dict(_item) for _item in obj["sort"]] if obj.get("sort") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/entity_search_page.py b/gooddata-api-client/gooddata_api_client/models/entity_search_page.py deleted file mode 100644 index 11acff9c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/entity_search_page.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class EntitySearchPage(BaseModel): - """ - Pagination information for entity search - """ # noqa: E501 - index: Annotated[int, Field(strict=True, ge=0)] = Field(description="Zero-based page index") - size: Annotated[int, Field(strict=True, ge=1)] = Field(description="Number of items per page") - __properties: ClassVar[List[str]] = ["index", "size"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of EntitySearchPage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of EntitySearchPage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "index": obj.get("index") if obj.get("index") is not None else 0, - "size": obj.get("size") if obj.get("size") is not None else 100 - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/entity_search_sort.py b/gooddata-api-client/gooddata_api_client/models/entity_search_sort.py deleted file mode 100644 index e9e3c90dc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/entity_search_sort.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class EntitySearchSort(BaseModel): - """ - Sorting criteria for entity search - """ # noqa: E501 - direction: Optional[StrictStr] = Field(default='ASC', description="Sort direction") - var_property: StrictStr = Field(description="Property name to sort by", alias="property") - __properties: ClassVar[List[str]] = ["direction", "property"] - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of EntitySearchSort from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of EntitySearchSort from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "direction": obj.get("direction") if obj.get("direction") is not None else 'ASC', - "property": obj.get("property") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_links.py b/gooddata-api-client/gooddata_api_client/models/execution_links.py deleted file mode 100644 index 337666c5c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_links.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionLinks(BaseModel): - """ - Links to the execution result. - """ # noqa: E501 - execution_result: StrictStr = Field(description="Link to the result data.", alias="executionResult") - __properties: ClassVar[List[str]] = ["executionResult"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "executionResult": obj.get("executionResult") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_response.py b/gooddata-api-client/gooddata_api_client/models/execution_response.py deleted file mode 100644 index 6d795c29d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_response.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_links import ExecutionLinks -from gooddata_api_client.models.result_dimension import ResultDimension -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionResponse(BaseModel): - """ - Response to AFM execution request body - """ # noqa: E501 - dimensions: List[ResultDimension] = Field(description="Dimensions of the result") - links: ExecutionLinks - __properties: ClassVar[List[str]] = ["dimensions", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimensions (list) - _items = [] - if self.dimensions: - for _item_dimensions in self.dimensions: - if _item_dimensions: - _items.append(_item_dimensions.to_dict()) - _dict['dimensions'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dimensions": [ResultDimension.from_dict(_item) for _item in obj["dimensions"]] if obj.get("dimensions") is not None else None, - "links": ExecutionLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_result.py b/gooddata-api-client/gooddata_api_client/models/execution_result.py deleted file mode 100644 index 5858403e9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_result.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dimension_header import DimensionHeader -from gooddata_api_client.models.execution_result_grand_total import ExecutionResultGrandTotal -from gooddata_api_client.models.execution_result_metadata import ExecutionResultMetadata -from gooddata_api_client.models.execution_result_paging import ExecutionResultPaging -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionResult(BaseModel): - """ - Contains the result of an AFM execution. - """ # noqa: E501 - data: List[Any] = Field(description="A multi-dimensional array of computed results. The most common one being a 2-dimensional array. The arrays can be composed of Double or null values.") - dimension_headers: List[DimensionHeader] = Field(description="An array containing dimension headers. The size of the array corresponds to the number of dimensions. Their order corresponds to the dimension order in the execution result spec.", alias="dimensionHeaders") - grand_totals: List[ExecutionResultGrandTotal] = Field(alias="grandTotals") - metadata: ExecutionResultMetadata - paging: ExecutionResultPaging - __properties: ClassVar[List[str]] = ["data", "dimensionHeaders", "grandTotals", "metadata", "paging"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimension_headers (list) - _items = [] - if self.dimension_headers: - for _item_dimension_headers in self.dimension_headers: - if _item_dimension_headers: - _items.append(_item_dimension_headers.to_dict()) - _dict['dimensionHeaders'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in grand_totals (list) - _items = [] - if self.grand_totals: - for _item_grand_totals in self.grand_totals: - if _item_grand_totals: - _items.append(_item_grand_totals.to_dict()) - _dict['grandTotals'] = _items - # override the default output from pydantic by calling `to_dict()` of metadata - if self.metadata: - _dict['metadata'] = self.metadata.to_dict() - # override the default output from pydantic by calling `to_dict()` of paging - if self.paging: - _dict['paging'] = self.paging.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": obj.get("data"), - "dimensionHeaders": [DimensionHeader.from_dict(_item) for _item in obj["dimensionHeaders"]] if obj.get("dimensionHeaders") is not None else None, - "grandTotals": [ExecutionResultGrandTotal.from_dict(_item) for _item in obj["grandTotals"]] if obj.get("grandTotals") is not None else None, - "metadata": ExecutionResultMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, - "paging": ExecutionResultPaging.from_dict(obj["paging"]) if obj.get("paging") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_result_data_source_message.py b/gooddata-api-client/gooddata_api_client/models/execution_result_data_source_message.py deleted file mode 100644 index 0611fc52f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_result_data_source_message.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionResultDataSourceMessage(BaseModel): - """ - A piece of extra information related to the results (e.g. debug information, warnings, etc.). - """ # noqa: E501 - correlation_id: StrictStr = Field(description="Id correlating different pieces of supplementary info together.", alias="correlationId") - data: Optional[Dict[str, Any]] = Field(default=None, description="Data of this particular supplementary info item: a free-form JSON specific to the particular supplementary info item type.") - source: StrictStr = Field(description="Information about what part of the system created this piece of supplementary info.") - type: StrictStr = Field(description="Type of the supplementary info instance. There are currently no well-known values for this, but there might be some in the future.") - __properties: ClassVar[List[str]] = ["correlationId", "data", "source", "type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionResultDataSourceMessage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionResultDataSourceMessage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "correlationId": obj.get("correlationId"), - "data": obj.get("data"), - "source": obj.get("source"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_result_grand_total.py b/gooddata-api-client/gooddata_api_client/models/execution_result_grand_total.py deleted file mode 100644 index 80d599045..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_result_grand_total.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dimension_header import DimensionHeader -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionResultGrandTotal(BaseModel): - """ - Contains the data of grand totals with the same dimensions. - """ # noqa: E501 - data: List[Dict[str, Any]] = Field(description="A multi-dimensional array of computed results. The most common one being a 2-dimensional array. The arrays can be composed of Double or null values.") - dimension_headers: List[DimensionHeader] = Field(description="Contains headers for a subset of `totalDimensions` in which the totals are grand totals.", alias="dimensionHeaders") - total_dimensions: List[StrictStr] = Field(description="Dimensions of the grand totals.", alias="totalDimensions") - __properties: ClassVar[List[str]] = ["data", "dimensionHeaders", "totalDimensions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionResultGrandTotal from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimension_headers (list) - _items = [] - if self.dimension_headers: - for _item_dimension_headers in self.dimension_headers: - if _item_dimension_headers: - _items.append(_item_dimension_headers.to_dict()) - _dict['dimensionHeaders'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionResultGrandTotal from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": obj.get("data"), - "dimensionHeaders": [DimensionHeader.from_dict(_item) for _item in obj["dimensionHeaders"]] if obj.get("dimensionHeaders") is not None else None, - "totalDimensions": obj.get("totalDimensions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_result_header.py b/gooddata-api-client/gooddata_api_client/models/execution_result_header.py deleted file mode 100644 index 8f92be9d0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_result_header.py +++ /dev/null @@ -1,197 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.attribute_execution_result_header import AttributeExecutionResultHeader -from gooddata_api_client.models.measure_execution_result_header import MeasureExecutionResultHeader -from gooddata_api_client.models.total_execution_result_header import TotalExecutionResultHeader -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -EXECUTIONRESULTHEADER_ONE_OF_SCHEMAS = ["AttributeExecutionResultHeader", "MeasureExecutionResultHeader", "TotalExecutionResultHeader"] - -class ExecutionResultHeader(BaseModel): - """ - Abstract execution result header - """ - # data type: AttributeExecutionResultHeader - oneof_schema_1_validator: Optional[AttributeExecutionResultHeader] = None - # data type: MeasureExecutionResultHeader - oneof_schema_2_validator: Optional[MeasureExecutionResultHeader] = None - # data type: TotalExecutionResultHeader - oneof_schema_3_validator: Optional[TotalExecutionResultHeader] = None - actual_instance: Optional[Union[AttributeExecutionResultHeader, MeasureExecutionResultHeader, TotalExecutionResultHeader]] = None - one_of_schemas: Set[str] = { "AttributeExecutionResultHeader", "MeasureExecutionResultHeader", "TotalExecutionResultHeader" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ExecutionResultHeader.model_construct() - error_messages = [] - match = 0 - # validate data type: AttributeExecutionResultHeader - if not isinstance(v, AttributeExecutionResultHeader): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributeExecutionResultHeader`") - else: - match += 1 - # validate data type: MeasureExecutionResultHeader - if not isinstance(v, MeasureExecutionResultHeader): - error_messages.append(f"Error! Input type `{type(v)}` is not `MeasureExecutionResultHeader`") - else: - match += 1 - # validate data type: TotalExecutionResultHeader - if not isinstance(v, TotalExecutionResultHeader): - error_messages.append(f"Error! Input type `{type(v)}` is not `TotalExecutionResultHeader`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ExecutionResultHeader with oneOf schemas: AttributeExecutionResultHeader, MeasureExecutionResultHeader, TotalExecutionResultHeader. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def _try_deserialize(cls, json_str: str, data: dict) -> Self: - """Disambiguate oneOf by checking for distinguishing keys. - - Each sub-schema wraps its content in a unique key: - - AttributeExecutionResultHeader uses 'attributeHeader' - - MeasureExecutionResultHeader uses 'measureHeader' - - TotalExecutionResultHeader uses 'totalHeader' - - Without field-based checking, pydantic v2 may accept multiple schemas - because all fields in the non-matching schemas happen to be optional - or have defaults, causing false-positive matches. - """ - instance = cls.model_construct() - - if "attributeHeader" in data: - instance.actual_instance = AttributeExecutionResultHeader.from_json(json_str) - return instance - - if "measureHeader" in data: - instance.actual_instance = MeasureExecutionResultHeader.from_json(json_str) - return instance - - if "totalHeader" in data: - instance.actual_instance = TotalExecutionResultHeader.from_json(json_str) - return instance - - raise ValueError( - "No match found when deserializing the JSON string into " - "ExecutionResultHeader with oneOf schemas: " - "AttributeExecutionResultHeader, MeasureExecutionResultHeader, " - "TotalExecutionResultHeader. The JSON object does not contain a " - "distinguishing key ('attributeHeader', 'measureHeader', or " - "'totalHeader')." - ) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - data = json.loads(json_str) - if isinstance(data, dict): - return cls._try_deserialize(json_str, data) - - # Fallback: brute-force try each schema (original behaviour) - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AttributeExecutionResultHeader - try: - if match == 0: - instance.actual_instance = AttributeExecutionResultHeader.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into MeasureExecutionResultHeader - try: - if match == 0: - instance.actual_instance = MeasureExecutionResultHeader.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into TotalExecutionResultHeader - try: - if match == 0: - instance.actual_instance = TotalExecutionResultHeader.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ExecutionResultHeader with oneOf schemas: AttributeExecutionResultHeader, MeasureExecutionResultHeader, TotalExecutionResultHeader. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AttributeExecutionResultHeader, MeasureExecutionResultHeader, TotalExecutionResultHeader]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_result_metadata.py b/gooddata-api-client/gooddata_api_client/models/execution_result_metadata.py deleted file mode 100644 index b5e6433a1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_result_metadata.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_result_data_source_message import ExecutionResultDataSourceMessage -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionResultMetadata(BaseModel): - """ - Additional metadata for the particular execution result. - """ # noqa: E501 - data_source_messages: List[ExecutionResultDataSourceMessage] = Field(description="Additional information sent by the underlying data source.", alias="dataSourceMessages") - __properties: ClassVar[List[str]] = ["dataSourceMessages"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionResultMetadata from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data_source_messages (list) - _items = [] - if self.data_source_messages: - for _item_data_source_messages in self.data_source_messages: - if _item_data_source_messages: - _items.append(_item_data_source_messages.to_dict()) - _dict['dataSourceMessages'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionResultMetadata from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSourceMessages": [ExecutionResultDataSourceMessage.from_dict(_item) for _item in obj["dataSourceMessages"]] if obj.get("dataSourceMessages") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_result_paging.py b/gooddata-api-client/gooddata_api_client/models/execution_result_paging.py deleted file mode 100644 index b775717c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_result_paging.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionResultPaging(BaseModel): - """ - A paging information related to the data presented in the execution result. These paging information are multi-dimensional. - """ # noqa: E501 - count: List[StrictInt] = Field(description="A count of the returned results in every dimension.") - offset: List[StrictInt] = Field(description="The offset of the results returned in every dimension.") - total: List[StrictInt] = Field(description="A total count of the results in every dimension.") - __properties: ClassVar[List[str]] = ["count", "offset", "total"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionResultPaging from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionResultPaging from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "count": obj.get("count"), - "offset": obj.get("offset"), - "total": obj.get("total") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/execution_settings.py b/gooddata-api-client/gooddata_api_client/models/execution_settings.py deleted file mode 100644 index a7e1bce9d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/execution_settings.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class ExecutionSettings(BaseModel): - """ - Various settings affecting the process of AFM execution or its result - """ # noqa: E501 - data_sampling_percentage: Optional[Union[Annotated[float, Field(lt=100, strict=True, gt=0)], Annotated[int, Field(lt=100, strict=True, gt=0)]]] = Field(default=None, description="Specifies the percentage of rows from fact datasets to use during computation. This feature is available only for workspaces that use a Vertica Data Source without table views.", alias="dataSamplingPercentage") - timestamp: Optional[datetime] = Field(default=None, description="Specifies the timestamp of the execution from which relative filters are resolved. If not set, the current time is used.") - __properties: ClassVar[List[str]] = ["dataSamplingPercentage", "timestamp"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExecutionSettings from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExecutionSettings from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSamplingPercentage": obj.get("dataSamplingPercentage"), - "timestamp": obj.get("timestamp") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/export_request.py b/gooddata-api-client/gooddata_api_client/models/export_request.py deleted file mode 100644 index 6384336f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/export_request.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.tabular_export_request import TabularExportRequest -from gooddata_api_client.models.visual_export_request import VisualExportRequest -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -EXPORTREQUEST_ONE_OF_SCHEMAS = ["TabularExportRequest", "VisualExportRequest"] - -class ExportRequest(BaseModel): - """ - JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. - """ - # data type: VisualExportRequest - oneof_schema_1_validator: Optional[VisualExportRequest] = None - # data type: TabularExportRequest - oneof_schema_2_validator: Optional[TabularExportRequest] = None - actual_instance: Optional[Union[TabularExportRequest, VisualExportRequest]] = None - one_of_schemas: Set[str] = { "TabularExportRequest", "VisualExportRequest" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ExportRequest.model_construct() - error_messages = [] - match = 0 - # validate data type: VisualExportRequest - if not isinstance(v, VisualExportRequest): - error_messages.append(f"Error! Input type `{type(v)}` is not `VisualExportRequest`") - else: - match += 1 - # validate data type: TabularExportRequest - if not isinstance(v, TabularExportRequest): - error_messages.append(f"Error! Input type `{type(v)}` is not `TabularExportRequest`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ExportRequest with oneOf schemas: TabularExportRequest, VisualExportRequest. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into VisualExportRequest - try: - if match == 0: - instance.actual_instance = VisualExportRequest.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into TabularExportRequest - try: - if match == 0: - instance.actual_instance = TabularExportRequest.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ExportRequest with oneOf schemas: TabularExportRequest, VisualExportRequest. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], TabularExportRequest, VisualExportRequest]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/export_response.py b/gooddata-api-client/gooddata_api_client/models/export_response.py deleted file mode 100644 index 0111ede8c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/export_response.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ExportResponse(BaseModel): - """ - ExportResponse - """ # noqa: E501 - export_result: StrictStr = Field(alias="exportResult") - __properties: ClassVar[List[str]] = ["exportResult"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExportResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExportResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "exportResult": obj.get("exportResult") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/export_result.py b/gooddata-api-client/gooddata_api_client/models/export_result.py deleted file mode 100644 index 42af7abbd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/export_result.py +++ /dev/null @@ -1,113 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ExportResult(BaseModel): - """ - ExportResult - """ # noqa: E501 - error_message: Optional[StrictStr] = Field(default=None, alias="errorMessage") - expires_at: Optional[datetime] = Field(default=None, alias="expiresAt") - export_id: StrictStr = Field(alias="exportId") - file_name: StrictStr = Field(alias="fileName") - file_size: Optional[StrictInt] = Field(default=None, alias="fileSize") - file_uri: Optional[StrictStr] = Field(default=None, alias="fileUri") - status: StrictStr - trace_id: Optional[StrictStr] = Field(default=None, alias="traceId") - triggered_at: Optional[datetime] = Field(default=None, alias="triggeredAt") - __properties: ClassVar[List[str]] = ["errorMessage", "expiresAt", "exportId", "fileName", "fileSize", "fileUri", "status", "traceId", "triggeredAt"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SUCCESS', 'ERROR', 'INTERNAL_ERROR', 'TIMEOUT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUCCESS', 'ERROR', 'INTERNAL_ERROR', 'TIMEOUT')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ExportResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ExportResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "errorMessage": obj.get("errorMessage"), - "expiresAt": obj.get("expiresAt"), - "exportId": obj.get("exportId"), - "fileName": obj.get("fileName"), - "fileSize": obj.get("fileSize"), - "fileUri": obj.get("fileUri"), - "status": obj.get("status"), - "traceId": obj.get("traceId"), - "triggeredAt": obj.get("triggeredAt") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/fact_identifier.py b/gooddata-api-client/gooddata_api_client/models/fact_identifier.py deleted file mode 100644 index d06923115..000000000 --- a/gooddata-api-client/gooddata_api_client/models/fact_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class FactIdentifier(BaseModel): - """ - A fact identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Fact ID.") - type: StrictStr = Field(description="A type of the fact.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['fact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('fact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FactIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FactIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/failed_operation.py b/gooddata-api-client/gooddata_api_client/models/failed_operation.py deleted file mode 100644 index 0cf631b21..000000000 --- a/gooddata-api-client/gooddata_api_client/models/failed_operation.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.operation import Operation -from gooddata_api_client.models.operation_error import OperationError -from typing import Optional, Set -from typing_extensions import Self - -class FailedOperation(Operation): - """ - Operation that has failed - """ # noqa: E501 - error: OperationError - __properties: ClassVar[List[str]] = ["id", "kind", "status", "error"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FailedOperation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of error - if self.error: - _dict['error'] = self.error.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FailedOperation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "kind": obj.get("kind"), - "status": obj.get("status"), - "error": OperationError.from_dict(obj["error"]) if obj.get("error") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/file.py b/gooddata-api-client/gooddata_api_client/models/file.py deleted file mode 100644 index 180b7d9f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/file.py +++ /dev/null @@ -1,162 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.notes import Notes -from gooddata_api_client.models.skeleton import Skeleton -from typing import Optional, Set -from typing_extensions import Self - -class File(BaseModel): - """ - File - """ # noqa: E501 - any: Optional[List[Dict[str, Any]]] = None - can_resegment: Optional[StrictStr] = Field(default=None, alias="canResegment") - id: Optional[StrictStr] = None - notes: Optional[Notes] = None - original: Optional[StrictStr] = None - other_attributes: Optional[Dict[str, StrictStr]] = Field(default=None, alias="otherAttributes") - skeleton: Optional[Skeleton] = None - space: Optional[StrictStr] = None - src_dir: Optional[StrictStr] = Field(default=None, alias="srcDir") - translate: Optional[StrictStr] = None - trg_dir: Optional[StrictStr] = Field(default=None, alias="trgDir") - unit_or_group: Optional[List[Dict[str, Any]]] = Field(default=None, alias="unitOrGroup") - __properties: ClassVar[List[str]] = ["any", "canResegment", "id", "notes", "original", "otherAttributes", "skeleton", "space", "srcDir", "translate", "trgDir", "unitOrGroup"] - - @field_validator('can_resegment') - def can_resegment_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['YES', 'NO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('YES', 'NO')") - return value - - @field_validator('src_dir') - def src_dir_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['LTR', 'RTL', 'AUTO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('LTR', 'RTL', 'AUTO')") - return value - - @field_validator('translate') - def translate_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['YES', 'NO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('YES', 'NO')") - return value - - @field_validator('trg_dir') - def trg_dir_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['LTR', 'RTL', 'AUTO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('LTR', 'RTL', 'AUTO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of File from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of notes - if self.notes: - _dict['notes'] = self.notes.to_dict() - # override the default output from pydantic by calling `to_dict()` of skeleton - if self.skeleton: - _dict['skeleton'] = self.skeleton.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of File from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "any": obj.get("any"), - "canResegment": obj.get("canResegment"), - "id": obj.get("id"), - "notes": Notes.from_dict(obj["notes"]) if obj.get("notes") is not None else None, - "original": obj.get("original"), - "otherAttributes": obj.get("otherAttributes"), - "skeleton": Skeleton.from_dict(obj["skeleton"]) if obj.get("skeleton") is not None else None, - "space": obj.get("space"), - "srcDir": obj.get("srcDir"), - "translate": obj.get("translate"), - "trgDir": obj.get("trgDir"), - "unitOrGroup": obj.get("unitOrGroup") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/filter_by.py b/gooddata-api-client/gooddata_api_client/models/filter_by.py deleted file mode 100644 index 71aa40a9f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/filter_by.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class FilterBy(BaseModel): - """ - Specifies what is used for filtering. - """ # noqa: E501 - label_type: Optional[StrictStr] = Field(default='REQUESTED', description="Specifies which label is used for filtering - primary or requested.", alias="labelType") - __properties: ClassVar[List[str]] = ["labelType"] - - @field_validator('label_type') - def label_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['PRIMARY', 'REQUESTED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('PRIMARY', 'REQUESTED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FilterBy from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FilterBy from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "labelType": obj.get("labelType") if obj.get("labelType") is not None else 'REQUESTED' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/filter_definition.py b/gooddata-api-client/gooddata_api_client/models/filter_definition.py deleted file mode 100644 index 89becbddd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/filter_definition.py +++ /dev/null @@ -1,276 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.absolute_date_filter import AbsoluteDateFilter -from gooddata_api_client.models.all_time_date_filter import AllTimeDateFilter -from gooddata_api_client.models.comparison_measure_value_filter import ComparisonMeasureValueFilter -from gooddata_api_client.models.compound_measure_value_filter import CompoundMeasureValueFilter -from gooddata_api_client.models.inline_filter_definition import InlineFilterDefinition -from gooddata_api_client.models.match_attribute_filter import MatchAttributeFilter -from gooddata_api_client.models.negative_attribute_filter import NegativeAttributeFilter -from gooddata_api_client.models.positive_attribute_filter import PositiveAttributeFilter -from gooddata_api_client.models.range_measure_value_filter import RangeMeasureValueFilter -from gooddata_api_client.models.ranking_filter import RankingFilter -from gooddata_api_client.models.relative_date_filter import RelativeDateFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -FILTERDEFINITION_ONE_OF_SCHEMAS = ["AbsoluteDateFilter", "AllTimeDateFilter", "ComparisonMeasureValueFilter", "CompoundMeasureValueFilter", "InlineFilterDefinition", "MatchAttributeFilter", "NegativeAttributeFilter", "PositiveAttributeFilter", "RangeMeasureValueFilter", "RankingFilter", "RelativeDateFilter"] - -class FilterDefinition(BaseModel): - """ - Abstract filter definition type - """ - # data type: InlineFilterDefinition - oneof_schema_1_validator: Optional[InlineFilterDefinition] = None - # data type: RankingFilter - oneof_schema_2_validator: Optional[RankingFilter] = None - # data type: ComparisonMeasureValueFilter - oneof_schema_3_validator: Optional[ComparisonMeasureValueFilter] = None - # data type: RangeMeasureValueFilter - oneof_schema_4_validator: Optional[RangeMeasureValueFilter] = None - # data type: CompoundMeasureValueFilter - oneof_schema_5_validator: Optional[CompoundMeasureValueFilter] = None - # data type: AbsoluteDateFilter - oneof_schema_6_validator: Optional[AbsoluteDateFilter] = None - # data type: RelativeDateFilter - oneof_schema_7_validator: Optional[RelativeDateFilter] = None - # data type: AllTimeDateFilter - oneof_schema_8_validator: Optional[AllTimeDateFilter] = None - # data type: NegativeAttributeFilter - oneof_schema_9_validator: Optional[NegativeAttributeFilter] = None - # data type: PositiveAttributeFilter - oneof_schema_10_validator: Optional[PositiveAttributeFilter] = None - # data type: MatchAttributeFilter - oneof_schema_11_validator: Optional[MatchAttributeFilter] = None - actual_instance: Optional[Union[AbsoluteDateFilter, AllTimeDateFilter, ComparisonMeasureValueFilter, CompoundMeasureValueFilter, InlineFilterDefinition, MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter, RangeMeasureValueFilter, RankingFilter, RelativeDateFilter]] = None - one_of_schemas: Set[str] = { "AbsoluteDateFilter", "AllTimeDateFilter", "ComparisonMeasureValueFilter", "CompoundMeasureValueFilter", "InlineFilterDefinition", "MatchAttributeFilter", "NegativeAttributeFilter", "PositiveAttributeFilter", "RangeMeasureValueFilter", "RankingFilter", "RelativeDateFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = FilterDefinition.model_construct() - error_messages = [] - match = 0 - # validate data type: InlineFilterDefinition - if not isinstance(v, InlineFilterDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `InlineFilterDefinition`") - else: - match += 1 - # validate data type: RankingFilter - if not isinstance(v, RankingFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RankingFilter`") - else: - match += 1 - # validate data type: ComparisonMeasureValueFilter - if not isinstance(v, ComparisonMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `ComparisonMeasureValueFilter`") - else: - match += 1 - # validate data type: RangeMeasureValueFilter - if not isinstance(v, RangeMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RangeMeasureValueFilter`") - else: - match += 1 - # validate data type: CompoundMeasureValueFilter - if not isinstance(v, CompoundMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `CompoundMeasureValueFilter`") - else: - match += 1 - # validate data type: AbsoluteDateFilter - if not isinstance(v, AbsoluteDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AbsoluteDateFilter`") - else: - match += 1 - # validate data type: RelativeDateFilter - if not isinstance(v, RelativeDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RelativeDateFilter`") - else: - match += 1 - # validate data type: AllTimeDateFilter - if not isinstance(v, AllTimeDateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AllTimeDateFilter`") - else: - match += 1 - # validate data type: NegativeAttributeFilter - if not isinstance(v, NegativeAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `NegativeAttributeFilter`") - else: - match += 1 - # validate data type: PositiveAttributeFilter - if not isinstance(v, PositiveAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `PositiveAttributeFilter`") - else: - match += 1 - # validate data type: MatchAttributeFilter - if not isinstance(v, MatchAttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `MatchAttributeFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in FilterDefinition with oneOf schemas: AbsoluteDateFilter, AllTimeDateFilter, ComparisonMeasureValueFilter, CompoundMeasureValueFilter, InlineFilterDefinition, MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter, RangeMeasureValueFilter, RankingFilter, RelativeDateFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into InlineFilterDefinition - try: - if match == 0: - instance.actual_instance = InlineFilterDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RankingFilter - try: - if match == 0: - instance.actual_instance = RankingFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into ComparisonMeasureValueFilter - try: - if match == 0: - instance.actual_instance = ComparisonMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RangeMeasureValueFilter - try: - if match == 0: - instance.actual_instance = RangeMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into CompoundMeasureValueFilter - try: - if match == 0: - instance.actual_instance = CompoundMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AbsoluteDateFilter - try: - if match == 0: - instance.actual_instance = AbsoluteDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RelativeDateFilter - try: - if match == 0: - instance.actual_instance = RelativeDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AllTimeDateFilter - try: - if match == 0: - instance.actual_instance = AllTimeDateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into NegativeAttributeFilter - try: - if match == 0: - instance.actual_instance = NegativeAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PositiveAttributeFilter - try: - if match == 0: - instance.actual_instance = PositiveAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into MatchAttributeFilter - try: - if match == 0: - instance.actual_instance = MatchAttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into FilterDefinition with oneOf schemas: AbsoluteDateFilter, AllTimeDateFilter, ComparisonMeasureValueFilter, CompoundMeasureValueFilter, InlineFilterDefinition, MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter, RangeMeasureValueFilter, RankingFilter, RelativeDateFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AbsoluteDateFilter, AllTimeDateFilter, ComparisonMeasureValueFilter, CompoundMeasureValueFilter, InlineFilterDefinition, MatchAttributeFilter, NegativeAttributeFilter, PositiveAttributeFilter, RangeMeasureValueFilter, RankingFilter, RelativeDateFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/filter_definition_for_simple_measure.py b/gooddata-api-client/gooddata_api_client/models/filter_definition_for_simple_measure.py deleted file mode 100644 index e410a3aa3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/filter_definition_for_simple_measure.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.attribute_filter import AttributeFilter -from gooddata_api_client.models.date_filter import DateFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -FILTERDEFINITIONFORSIMPLEMEASURE_ONE_OF_SCHEMAS = ["AttributeFilter", "DateFilter"] - -class FilterDefinitionForSimpleMeasure(BaseModel): - """ - Abstract filter definition type for simple metric. - """ - # data type: DateFilter - oneof_schema_1_validator: Optional[DateFilter] = None - # data type: AttributeFilter - oneof_schema_2_validator: Optional[AttributeFilter] = None - actual_instance: Optional[Union[AttributeFilter, DateFilter]] = None - one_of_schemas: Set[str] = { "AttributeFilter", "DateFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = FilterDefinitionForSimpleMeasure.model_construct() - error_messages = [] - match = 0 - # validate data type: DateFilter - if not isinstance(v, DateFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `DateFilter`") - else: - match += 1 - # validate data type: AttributeFilter - if not isinstance(v, AttributeFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributeFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in FilterDefinitionForSimpleMeasure with oneOf schemas: AttributeFilter, DateFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DateFilter - try: - if match == 0: - instance.actual_instance = DateFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AttributeFilter - try: - if match == 0: - instance.actual_instance = AttributeFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into FilterDefinitionForSimpleMeasure with oneOf schemas: AttributeFilter, DateFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AttributeFilter, DateFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/forecast_config.py b/gooddata-api-client/gooddata_api_client/models/forecast_config.py deleted file mode 100644 index 96f262cc4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/forecast_config.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class ForecastConfig(BaseModel): - """ - Forecast configuration. - """ # noqa: E501 - confidence_level: Union[StrictFloat, StrictInt] = Field(description="Confidence interval boundary value.", alias="confidenceLevel") - forecast_period: StrictInt = Field(description="Number of future periods that should be forecasted", alias="forecastPeriod") - seasonal: StrictBool = Field(description="Whether the input data is seasonal") - __properties: ClassVar[List[str]] = ["confidenceLevel", "forecastPeriod", "seasonal"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ForecastConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ForecastConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "confidenceLevel": obj.get("confidenceLevel"), - "forecastPeriod": obj.get("forecastPeriod"), - "seasonal": obj.get("seasonal") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/forecast_request.py b/gooddata-api-client/gooddata_api_client/models/forecast_request.py deleted file mode 100644 index 2eccd2067..000000000 --- a/gooddata-api-client/gooddata_api_client/models/forecast_request.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class ForecastRequest(BaseModel): - """ - ForecastRequest - """ # noqa: E501 - confidence_level: Optional[Union[Annotated[float, Field(lt=1.0, strict=True, gt=0.0)], Annotated[int, Field(lt=1, strict=True, gt=0)]]] = Field(default=0.95, description="Confidence interval boundary value.", alias="confidenceLevel") - forecast_period: StrictInt = Field(description="Number of future periods that should be forecasted", alias="forecastPeriod") - seasonal: Optional[StrictBool] = Field(default=False, description="Whether the input data is seasonal") - __properties: ClassVar[List[str]] = ["confidenceLevel", "forecastPeriod", "seasonal"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ForecastRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ForecastRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "confidenceLevel": obj.get("confidenceLevel") if obj.get("confidenceLevel") is not None else 0.95, - "forecastPeriod": obj.get("forecastPeriod"), - "seasonal": obj.get("seasonal") if obj.get("seasonal") is not None else False - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/forecast_result.py b/gooddata-api-client/gooddata_api_client/models/forecast_result.py deleted file mode 100644 index 6756ffbd1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/forecast_result.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class ForecastResult(BaseModel): - """ - ForecastResult - """ # noqa: E501 - attribute: List[StrictStr] - lower_bound: List[Optional[Union[StrictFloat, StrictInt]]] = Field(alias="lowerBound") - origin: List[Optional[Union[StrictFloat, StrictInt]]] - prediction: List[Optional[Union[StrictFloat, StrictInt]]] - upper_bound: List[Optional[Union[StrictFloat, StrictInt]]] = Field(alias="upperBound") - __properties: ClassVar[List[str]] = ["attribute", "lowerBound", "origin", "prediction", "upperBound"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ForecastResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ForecastResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": obj.get("attribute"), - "lowerBound": obj.get("lowerBound"), - "origin": obj.get("origin"), - "prediction": obj.get("prediction"), - "upperBound": obj.get("upperBound") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/found_objects.py b/gooddata-api-client/gooddata_api_client/models/found_objects.py deleted file mode 100644 index 697b6804a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/found_objects.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.search_result_object import SearchResultObject -from typing import Optional, Set -from typing_extensions import Self - -class FoundObjects(BaseModel): - """ - List of objects found by similarity search and post-processed by LLM. - """ # noqa: E501 - objects: List[SearchResultObject] = Field(description="List of objects found with a similarity search.") - reasoning: StrictStr = Field(description="DEPRECATED: Use top-level reasoning.steps instead. Reasoning from LLM. Description of how and why the answer was generated.") - __properties: ClassVar[List[str]] = ["objects", "reasoning"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FoundObjects from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in objects (list) - _items = [] - if self.objects: - for _item_objects in self.objects: - if _item_objects: - _items.append(_item_objects.to_dict()) - _dict['objects'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FoundObjects from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "objects": [SearchResultObject.from_dict(_item) for _item in obj["objects"]] if obj.get("objects") is not None else None, - "reasoning": obj.get("reasoning") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/frequency.py b/gooddata-api-client/gooddata_api_client/models/frequency.py deleted file mode 100644 index 04c3deaa6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/frequency.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.frequency_bucket import FrequencyBucket -from typing import Optional, Set -from typing_extensions import Self - -class Frequency(BaseModel): - """ - Frequency - """ # noqa: E501 - buckets: List[FrequencyBucket] - __properties: ClassVar[List[str]] = ["buckets"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Frequency from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in buckets (list) - _items = [] - if self.buckets: - for _item_buckets in self.buckets: - if _item_buckets: - _items.append(_item_buckets.to_dict()) - _dict['buckets'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Frequency from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "buckets": [FrequencyBucket.from_dict(_item) for _item in obj["buckets"]] if obj.get("buckets") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/frequency_bucket.py b/gooddata-api-client/gooddata_api_client/models/frequency_bucket.py deleted file mode 100644 index 47026650b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/frequency_bucket.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class FrequencyBucket(BaseModel): - """ - FrequencyBucket - """ # noqa: E501 - count: StrictInt - value: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["count", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FrequencyBucket from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FrequencyBucket from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "count": obj.get("count"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/frequency_properties.py b/gooddata-api-client/gooddata_api_client/models/frequency_properties.py deleted file mode 100644 index 838374542..000000000 --- a/gooddata-api-client/gooddata_api_client/models/frequency_properties.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class FrequencyProperties(BaseModel): - """ - FrequencyProperties - """ # noqa: E501 - value_limit: Optional[StrictInt] = Field(default=10, description="The maximum number of distinct values to return.", alias="valueLimit") - __properties: ClassVar[List[str]] = ["valueLimit"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of FrequencyProperties from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of FrequencyProperties from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "valueLimit": obj.get("valueLimit") if obj.get("valueLimit") is not None else 10 - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/generate_description_request.py b/gooddata-api-client/gooddata_api_client/models/generate_description_request.py deleted file mode 100644 index 36a911716..000000000 --- a/gooddata-api-client/gooddata_api_client/models/generate_description_request.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class GenerateDescriptionRequest(BaseModel): - """ - GenerateDescriptionRequest - """ # noqa: E501 - object_id: StrictStr = Field(description="Identifier of the object to describe", alias="objectId") - object_type: StrictStr = Field(description="Type of the object to describe. One of: visualization, dashboard, metric, fact, attribute", alias="objectType") - __properties: ClassVar[List[str]] = ["objectId", "objectType"] - - @field_validator('object_type') - def object_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['Visualization', 'Dashboard', 'Metric', 'Fact', 'Attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('Visualization', 'Dashboard', 'Metric', 'Fact', 'Attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GenerateDescriptionRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GenerateDescriptionRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "objectId": obj.get("objectId"), - "objectType": obj.get("objectType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/generate_description_response.py b/gooddata-api-client/gooddata_api_client/models/generate_description_response.py deleted file mode 100644 index 8f1e8cc00..000000000 --- a/gooddata-api-client/gooddata_api_client/models/generate_description_response.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class GenerateDescriptionResponse(BaseModel): - """ - GenerateDescriptionResponse - """ # noqa: E501 - description: Optional[StrictStr] = Field(default=None, description="Generated description of the requested object") - note: Optional[StrictStr] = Field(default=None, description="Additional note with details in case generation was not performed") - __properties: ClassVar[List[str]] = ["description", "note"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GenerateDescriptionResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GenerateDescriptionResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "note": obj.get("note") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/generate_ldm_request.py b/gooddata-api-client/gooddata_api_client/models/generate_ldm_request.py deleted file mode 100644 index b38dbf08d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/generate_ldm_request.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.pdm_ldm_request import PdmLdmRequest -from typing import Optional, Set -from typing_extensions import Self - -class GenerateLdmRequest(BaseModel): - """ - A request containing all information needed for generation of logical model. - """ # noqa: E501 - aggregated_fact_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as aggregated facts. The prefix is then followed by the value of `separator` parameter. Given the aggregated fact prefix is `aggr` and separator is `__`, the columns with name like `aggr__sum__product__sold` will be considered as aggregated sold fact in the product table with SUM aggregate function.", alias="aggregatedFactPrefix") - date_granularities: Optional[StrictStr] = Field(default=None, description="Option to control date granularities for date datasets. Empty value enables common date granularities (DAY, WEEK, MONTH, QUARTER, YEAR). Default value is `all` which enables all available date granularities, including time granularities (like hours, minutes).", alias="dateGranularities") - date_reference_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as references to date dataset. The prefix is then followed by the value of `separator` parameter. Given the reference prefix is `d` and separator is `__`, the columns with name like `d__date` will be considered as reference to date dataset. There can be also second separator and granularity suffix, e.g. `d__date__day` to create attribute reference to exact date dataset and granularity.", alias="dateReferencePrefix") - denorm_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as denormalization references. The prefix is then followed by the value of `separator` parameter. Given the denormalization reference prefix is `dr` and separator is `__`, the columns with name like `dr__customer_name` will be considered as denormalization references.", alias="denormPrefix") - fact_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as facts. The prefix is then followed by the value of `separator` parameter. Given the fact prefix is `f` and separator is `__`, the columns with name like `f__sold` will be considered as facts.", alias="factPrefix") - generate_long_ids: Optional[StrictBool] = Field(default=False, description="A flag dictating how the attribute, fact and label ids are generated. By default their ids are derived only from the column name, unless there would be a conflict (e.g. category coming from two different tables). In that case a long id format of `.` is used. If the flag is set to true, then all ids will be generated in the long form.", alias="generateLongIds") - grain_multivalue_reference_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as grain multivalue references. The prefix is then followed by the value of `separator` parameter. Given the reference prefix is `grmr` and separator is `__`, the columns with name like `grmr__customer__customer_id` will be considered as grain multivalue references to customer_id in customer table.", alias="grainMultivalueReferencePrefix") - grain_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as grains. The prefix is then followed by the value of `separator` parameter. Given the grain prefix is `gr` and separator is `__`, the columns with name like `gr__name` will be considered as grains.", alias="grainPrefix") - grain_reference_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as grain references. The prefix is then followed by the value of `separator` parameter. For composite references, the reference is multivalue if at least one column is multivalue. Given the reference prefix is `grr` and separator is `__`, the columns with name like `grr__customer__customer_id` will be considered as grain references to customer_id in customer table.", alias="grainReferencePrefix") - multivalue_reference_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as multivalue references. The prefix is then followed by the value of `separator` parameter. For composite references, the reference is multivalue if at least one column is multivalue. Given the reference prefix is `mr` and separator is `__`, the columns with name like `mr__customer__customer_id` will be considered as multivalue references to customer_id in customer table.", alias="multivalueReferencePrefix") - pdm: Optional[PdmLdmRequest] = None - primary_label_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as primary labels. The prefix is then followed by the value of `separator` parameter. Given the primary label prefix is `pl` and separator is `__`, the columns with name like `pl__country_id` will be considered as primary labels.", alias="primaryLabelPrefix") - reference_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as references. The prefix is then followed by the value of `separator` parameter. Given the reference prefix is `r` and separator is `__`, the columns with name like `r__customer__customer_id` will be considered as references to customer_id in customer table.", alias="referencePrefix") - secondary_label_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as secondary labels. The prefix is then followed by the value of `separator` parameter. Given the secondary label prefix is `ls` and separator is `__`, the columns with name like `ls__country_id__country_name` will be considered as secondary labels.", alias="secondaryLabelPrefix") - separator: Optional[StrictStr] = Field(default='__', description="A separator between prefixes and the names. Default is \"__\".") - table_prefix: Optional[StrictStr] = Field(default=None, description="Tables starting with this prefix will be included. The prefix is then followed by the value of `separator` parameter. Given the table prefix is `out_table` and separator is `__`, the table with name like `out_table__customers` will be scanned.", alias="tablePrefix") - translation_prefix: Optional[StrictStr] = Field(default=None, description="Columns starting with this prefix will be considered as secondary label translation. The prefix is then followed by the value of `separator` parameter. Given the translation prefix is `tr` and separator is `__`, the columns with name like `tr__attribute__label__en-US` will be considered as secondary label en-US translation to `label` label in `attribute` attribute.", alias="translationPrefix") - view_prefix: Optional[StrictStr] = Field(default=None, description="Views starting with this prefix will be included. The prefix is then followed by the value of `separator` parameter. Given the view prefix is `out_view` and separator is `__`, the table with name like `out_view__us_customers` will be scanned.", alias="viewPrefix") - wdf_prefix: Optional[StrictStr] = Field(default='wdf', description="Column serving as workspace data filter. No labels are auto generated for such columns.", alias="wdfPrefix") - workspace_id: Optional[StrictStr] = Field(default=None, description="Optional workspace id.", alias="workspaceId") - __properties: ClassVar[List[str]] = ["aggregatedFactPrefix", "dateGranularities", "dateReferencePrefix", "denormPrefix", "factPrefix", "generateLongIds", "grainMultivalueReferencePrefix", "grainPrefix", "grainReferencePrefix", "multivalueReferencePrefix", "pdm", "primaryLabelPrefix", "referencePrefix", "secondaryLabelPrefix", "separator", "tablePrefix", "translationPrefix", "viewPrefix", "wdfPrefix", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GenerateLdmRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of pdm - if self.pdm: - _dict['pdm'] = self.pdm.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GenerateLdmRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "aggregatedFactPrefix": obj.get("aggregatedFactPrefix"), - "dateGranularities": obj.get("dateGranularities"), - "dateReferencePrefix": obj.get("dateReferencePrefix"), - "denormPrefix": obj.get("denormPrefix"), - "factPrefix": obj.get("factPrefix"), - "generateLongIds": obj.get("generateLongIds") if obj.get("generateLongIds") is not None else False, - "grainMultivalueReferencePrefix": obj.get("grainMultivalueReferencePrefix"), - "grainPrefix": obj.get("grainPrefix"), - "grainReferencePrefix": obj.get("grainReferencePrefix"), - "multivalueReferencePrefix": obj.get("multivalueReferencePrefix"), - "pdm": PdmLdmRequest.from_dict(obj["pdm"]) if obj.get("pdm") is not None else None, - "primaryLabelPrefix": obj.get("primaryLabelPrefix"), - "referencePrefix": obj.get("referencePrefix"), - "secondaryLabelPrefix": obj.get("secondaryLabelPrefix"), - "separator": obj.get("separator") if obj.get("separator") is not None else '__', - "tablePrefix": obj.get("tablePrefix"), - "translationPrefix": obj.get("translationPrefix"), - "viewPrefix": obj.get("viewPrefix"), - "wdfPrefix": obj.get("wdfPrefix") if obj.get("wdfPrefix") is not None else 'wdf', - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/generate_title_request.py b/gooddata-api-client/gooddata_api_client/models/generate_title_request.py deleted file mode 100644 index 7a64c81eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/generate_title_request.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class GenerateTitleRequest(BaseModel): - """ - GenerateTitleRequest - """ # noqa: E501 - object_id: StrictStr = Field(description="Identifier of the object to title", alias="objectId") - object_type: StrictStr = Field(description="Type of the object to title. Matches chat-search object types.", alias="objectType") - __properties: ClassVar[List[str]] = ["objectId", "objectType"] - - @field_validator('object_type') - def object_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['Visualization', 'Dashboard', 'Metric', 'Fact', 'Attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('Visualization', 'Dashboard', 'Metric', 'Fact', 'Attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GenerateTitleRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GenerateTitleRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "objectId": obj.get("objectId"), - "objectType": obj.get("objectType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/generate_title_response.py b/gooddata-api-client/gooddata_api_client/models/generate_title_response.py deleted file mode 100644 index 4ee946e4d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/generate_title_response.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class GenerateTitleResponse(BaseModel): - """ - GenerateTitleResponse - """ # noqa: E501 - note: Optional[StrictStr] = Field(default=None, description="Additional note with details in case generation was not performed") - title: Optional[StrictStr] = Field(default=None, description="Generated title of the requested object") - __properties: ClassVar[List[str]] = ["note", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GenerateTitleResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GenerateTitleResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "note": obj.get("note"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/geo_area_config.py b/gooddata-api-client/gooddata_api_client/models/geo_area_config.py deleted file mode 100644 index e952b8c86..000000000 --- a/gooddata-api-client/gooddata_api_client/models/geo_area_config.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.geo_collection_identifier import GeoCollectionIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class GeoAreaConfig(BaseModel): - """ - Configuration specific to geo area labels. - """ # noqa: E501 - collection: GeoCollectionIdentifier - __properties: ClassVar[List[str]] = ["collection"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GeoAreaConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of collection - if self.collection: - _dict['collection'] = self.collection.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GeoAreaConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "collection": GeoCollectionIdentifier.from_dict(obj["collection"]) if obj.get("collection") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/geo_collection_identifier.py b/gooddata-api-client/gooddata_api_client/models/geo_collection_identifier.py deleted file mode 100644 index e53e3c6dd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/geo_collection_identifier.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class GeoCollectionIdentifier(BaseModel): - """ - GeoCollectionIdentifier - """ # noqa: E501 - id: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Geo collection identifier.") - kind: Optional[StrictStr] = Field(default='STATIC', description="Type of geo collection.") - __properties: ClassVar[List[str]] = ["id", "kind"] - - @field_validator('kind') - def kind_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['STATIC', 'CUSTOM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('STATIC', 'CUSTOM')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GeoCollectionIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GeoCollectionIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "kind": obj.get("kind") if obj.get("kind") is not None else 'STATIC' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/get_ai_lake_operation200_response.py b/gooddata-api-client/gooddata_api_client/models/get_ai_lake_operation200_response.py deleted file mode 100644 index 1dd5b0f1c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/get_ai_lake_operation200_response.py +++ /dev/null @@ -1,159 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.failed_operation import FailedOperation -from gooddata_api_client.models.pending_operation import PendingOperation -from gooddata_api_client.models.succeeded_operation import SucceededOperation -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -GETAILAKEOPERATION200RESPONSE_ONE_OF_SCHEMAS = ["FailedOperation", "PendingOperation", "SucceededOperation"] - -class GetAiLakeOperation200Response(BaseModel): - """ - GetAiLakeOperation200Response - """ - # data type: FailedOperation - oneof_schema_1_validator: Optional[FailedOperation] = None - # data type: PendingOperation - oneof_schema_2_validator: Optional[PendingOperation] = None - # data type: SucceededOperation - oneof_schema_3_validator: Optional[SucceededOperation] = None - actual_instance: Optional[Union[FailedOperation, PendingOperation, SucceededOperation]] = None - one_of_schemas: Set[str] = { "FailedOperation", "PendingOperation", "SucceededOperation" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - discriminator_value_class_map: Dict[str, str] = { - } - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = GetAiLakeOperation200Response.model_construct() - error_messages = [] - match = 0 - # validate data type: FailedOperation - if not isinstance(v, FailedOperation): - error_messages.append(f"Error! Input type `{type(v)}` is not `FailedOperation`") - else: - match += 1 - # validate data type: PendingOperation - if not isinstance(v, PendingOperation): - error_messages.append(f"Error! Input type `{type(v)}` is not `PendingOperation`") - else: - match += 1 - # validate data type: SucceededOperation - if not isinstance(v, SucceededOperation): - error_messages.append(f"Error! Input type `{type(v)}` is not `SucceededOperation`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in GetAiLakeOperation200Response with oneOf schemas: FailedOperation, PendingOperation, SucceededOperation. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into FailedOperation - try: - if match == 0: - instance.actual_instance = FailedOperation.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PendingOperation - try: - if match == 0: - instance.actual_instance = PendingOperation.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into SucceededOperation - try: - if match == 0: - instance.actual_instance = SucceededOperation.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into GetAiLakeOperation200Response with oneOf schemas: FailedOperation, PendingOperation, SucceededOperation. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], FailedOperation, PendingOperation, SucceededOperation]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/get_image_export202_response_inner.py b/gooddata-api-client/gooddata_api_client/models/get_image_export202_response_inner.py deleted file mode 100644 index e6ae7c919..000000000 --- a/gooddata-api-client/gooddata_api_client/models/get_image_export202_response_inner.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class GetImageExport202ResponseInner(BaseModel): - """ - GetImageExport202ResponseInner - """ # noqa: E501 - char: Optional[StrictStr] = None - direct: Optional[StrictBool] = None - double: Optional[Union[StrictFloat, StrictInt]] = None - var_float: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, alias="float") - int: Optional[StrictInt] = None - long: Optional[StrictInt] = None - read_only: Optional[StrictBool] = Field(default=None, alias="readOnly") - short: Optional[StrictInt] = None - __properties: ClassVar[List[str]] = ["char", "direct", "double", "float", "int", "long", "readOnly", "short"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GetImageExport202ResponseInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GetImageExport202ResponseInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "char": obj.get("char"), - "direct": obj.get("direct"), - "double": obj.get("double"), - "float": obj.get("float"), - "int": obj.get("int"), - "long": obj.get("long"), - "readOnly": obj.get("readOnly"), - "short": obj.get("short") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/get_quality_issues_response.py b/gooddata-api-client/gooddata_api_client/models/get_quality_issues_response.py deleted file mode 100644 index d211610d7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/get_quality_issues_response.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.quality_issue import QualityIssue -from typing import Optional, Set -from typing_extensions import Self - -class GetQualityIssuesResponse(BaseModel): - """ - GetQualityIssuesResponse - """ # noqa: E501 - issues: List[QualityIssue] = Field(description="List of quality issues found in the workspace") - status: StrictStr = Field(description="Status of the latest triggered quality check process") - updated_at: Optional[StrictStr] = Field(default=None, description="Timestamp when the quality issues were last updated (ISO format)", alias="updatedAt") - __properties: ClassVar[List[str]] = ["issues", "status", "updatedAt"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RUNNING', 'SYNCING', 'COMPLETED', 'FAILED', 'CANCELLED', 'NOT_FOUND', 'DISABLED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RUNNING', 'SYNCING', 'COMPLETED', 'FAILED', 'CANCELLED', 'NOT_FOUND', 'DISABLED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GetQualityIssuesResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in issues (list) - _items = [] - if self.issues: - for _item_issues in self.issues: - if _item_issues: - _items.append(_item_issues.to_dict()) - _dict['issues'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GetQualityIssuesResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "issues": [QualityIssue.from_dict(_item) for _item in obj["issues"]] if obj.get("issues") is not None else None, - "status": obj.get("status"), - "updatedAt": obj.get("updatedAt") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/grain_identifier.py b/gooddata-api-client/gooddata_api_client/models/grain_identifier.py deleted file mode 100644 index c43a03a28..000000000 --- a/gooddata-api-client/gooddata_api_client/models/grain_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class GrainIdentifier(BaseModel): - """ - A grain identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Grain ID.") - type: StrictStr = Field(description="A type of the grain.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute', 'date']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute', 'date')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GrainIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GrainIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/granted_permission.py b/gooddata-api-client/gooddata_api_client/models/granted_permission.py deleted file mode 100644 index 5f4e3f10a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/granted_permission.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class GrantedPermission(BaseModel): - """ - Permissions granted to the user group - """ # noqa: E501 - level: StrictStr = Field(description="Level of permission") - source: StrictStr = Field(description="Source of permission") - __properties: ClassVar[List[str]] = ["level", "source"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GrantedPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GrantedPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "level": obj.get("level"), - "source": obj.get("source") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/granularities_formatting.py b/gooddata-api-client/gooddata_api_client/models/granularities_formatting.py deleted file mode 100644 index 267a0aab8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/granularities_formatting.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class GranularitiesFormatting(BaseModel): - """ - A date dataset granularities title formatting rules. - """ # noqa: E501 - title_base: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Title base is used as a token in title pattern. If left empty, it is replaced by date dataset title.", alias="titleBase") - title_pattern: Annotated[str, Field(strict=True, max_length=255)] = Field(description="This pattern is used to generate the title of attributes and labels that result from the granularities. There are two tokens available: * `%titleBase` - represents shared part by all titles, or title of Date Dataset if left empty * `%granularityTitle` - represents `DateGranularity` built-in title", alias="titlePattern") - __properties: ClassVar[List[str]] = ["titleBase", "titlePattern"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of GranularitiesFormatting from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of GranularitiesFormatting from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "titleBase": obj.get("titleBase"), - "titlePattern": obj.get("titlePattern") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/header_group.py b/gooddata-api-client/gooddata_api_client/models/header_group.py deleted file mode 100644 index 513f55301..000000000 --- a/gooddata-api-client/gooddata_api_client/models/header_group.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_result_header import ExecutionResultHeader -from typing import Optional, Set -from typing_extensions import Self - -class HeaderGroup(BaseModel): - """ - Contains the information specific for a group of headers. These groups correlate to attributes and metric groups. - """ # noqa: E501 - headers: List[ExecutionResultHeader] = Field(description="An array containing headers.") - __properties: ClassVar[List[str]] = ["headers"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of HeaderGroup from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in headers (list) - _items = [] - if self.headers: - for _item_headers in self.headers: - if _item_headers: - _items.append(_item_headers.to_dict()) - _dict['headers'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of HeaderGroup from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "headers": [ExecutionResultHeader.from_dict(_item) for _item in obj["headers"]] if obj.get("headers") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/hierarchy_object_identification.py b/gooddata-api-client/gooddata_api_client/models/hierarchy_object_identification.py deleted file mode 100644 index 76c88d96e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/hierarchy_object_identification.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class HierarchyObjectIdentification(BaseModel): - """ - Represents objects with given ID and type in workspace hierarchy (more than one can exists in different workspaces). - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard', 'attribute', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'prompt', 'visualizationObject', 'filterContext', 'workspaceDataFilter', 'workspaceDataFilterSettings']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard', 'attribute', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'prompt', 'visualizationObject', 'filterContext', 'workspaceDataFilter', 'workspaceDataFilterSettings')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of HierarchyObjectIdentification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of HierarchyObjectIdentification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/histogram.py b/gooddata-api-client/gooddata_api_client/models/histogram.py deleted file mode 100644 index 77e5fb423..000000000 --- a/gooddata-api-client/gooddata_api_client/models/histogram.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.histogram_bucket import HistogramBucket -from typing import Optional, Set -from typing_extensions import Self - -class Histogram(BaseModel): - """ - Histogram - """ # noqa: E501 - buckets: List[HistogramBucket] - __properties: ClassVar[List[str]] = ["buckets"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Histogram from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in buckets (list) - _items = [] - if self.buckets: - for _item_buckets in self.buckets: - if _item_buckets: - _items.append(_item_buckets.to_dict()) - _dict['buckets'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Histogram from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "buckets": [HistogramBucket.from_dict(_item) for _item in obj["buckets"]] if obj.get("buckets") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/histogram_bucket.py b/gooddata-api-client/gooddata_api_client/models/histogram_bucket.py deleted file mode 100644 index 93c33c779..000000000 --- a/gooddata-api-client/gooddata_api_client/models/histogram_bucket.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class HistogramBucket(BaseModel): - """ - HistogramBucket - """ # noqa: E501 - count: StrictInt - lower_bound: Union[StrictFloat, StrictInt] = Field(alias="lowerBound") - upper_bound: Union[StrictFloat, StrictInt] = Field(alias="upperBound") - __properties: ClassVar[List[str]] = ["count", "lowerBound", "upperBound"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of HistogramBucket from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of HistogramBucket from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "count": obj.get("count"), - "lowerBound": obj.get("lowerBound"), - "upperBound": obj.get("upperBound") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/histogram_properties.py b/gooddata-api-client/gooddata_api_client/models/histogram_properties.py deleted file mode 100644 index a2edfe661..000000000 --- a/gooddata-api-client/gooddata_api_client/models/histogram_properties.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class HistogramProperties(BaseModel): - """ - HistogramProperties - """ # noqa: E501 - bucket_count: StrictInt = Field(alias="bucketCount") - __properties: ClassVar[List[str]] = ["bucketCount"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of HistogramProperties from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of HistogramProperties from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "bucketCount": obj.get("bucketCount") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/identifier_duplications.py b/gooddata-api-client/gooddata_api_client/models/identifier_duplications.py deleted file mode 100644 index 3ae7db60c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/identifier_duplications.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class IdentifierDuplications(BaseModel): - """ - Contains information about conflicting IDs in workspace hierarchy - """ # noqa: E501 - id: StrictStr - origins: List[StrictStr] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "origins", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard', 'attribute', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'prompt', 'visualizationObject', 'filterContext', 'workspaceDataFilter', 'workspaceDataFilterSettings']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard', 'attribute', 'dashboardPlugin', 'dataset', 'fact', 'label', 'metric', 'prompt', 'visualizationObject', 'filterContext', 'workspaceDataFilter', 'workspaceDataFilterSettings')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of IdentifierDuplications from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of IdentifierDuplications from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "origins": obj.get("origins"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/identifier_ref.py b/gooddata-api-client/gooddata_api_client/models/identifier_ref.py deleted file mode 100644 index afbf958b8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/identifier_ref.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.identifier_ref_identifier import IdentifierRefIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class IdentifierRef(BaseModel): - """ - IdentifierRef - """ # noqa: E501 - identifier: Optional[IdentifierRefIdentifier] = None - __properties: ClassVar[List[str]] = ["identifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of IdentifierRef from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of IdentifierRef from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": IdentifierRefIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/identifier_ref_identifier.py b/gooddata-api-client/gooddata_api_client/models/identifier_ref_identifier.py deleted file mode 100644 index c25adad12..000000000 --- a/gooddata-api-client/gooddata_api_client/models/identifier_ref_identifier.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class IdentifierRefIdentifier(BaseModel): - """ - IdentifierRefIdentifier - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard', 'attribute', 'attributeHierarchy', 'dashboardPlugin', 'dataset', 'fact', 'aggregatedFact', 'label', 'metric', 'userDataFilter', 'exportDefinition', 'automation', 'automationResult', 'memoryItem', 'knowledgeRecommendation', 'prompt', 'visualizationObject', 'filterContext', 'workspaceSettings', 'customApplicationSetting', 'workspaceDataFilter', 'workspaceDataFilterSetting', 'filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard', 'attribute', 'attributeHierarchy', 'dashboardPlugin', 'dataset', 'fact', 'aggregatedFact', 'label', 'metric', 'userDataFilter', 'exportDefinition', 'automation', 'automationResult', 'memoryItem', 'knowledgeRecommendation', 'prompt', 'visualizationObject', 'filterContext', 'workspaceSettings', 'customApplicationSetting', 'workspaceDataFilter', 'workspaceDataFilterSetting', 'filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of IdentifierRefIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of IdentifierRefIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/image_export_request.py b/gooddata-api-client/gooddata_api_client/models/image_export_request.py deleted file mode 100644 index 50273ac94..000000000 --- a/gooddata-api-client/gooddata_api_client/models/image_export_request.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class ImageExportRequest(BaseModel): - """ - Export request object describing the export properties and metadata for image exports. - """ # noqa: E501 - dashboard_id: StrictStr = Field(description="Dashboard identifier", alias="dashboardId") - file_name: StrictStr = Field(description="File name to be used for retrieving the image document.", alias="fileName") - format: StrictStr = Field(description="Requested resulting file type.") - metadata: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - widget_ids: Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=255)]], Field(min_length=1, max_length=1)] = Field(description="List of widget identifiers to be exported. Note that only one widget is currently supported.", alias="widgetIds") - __properties: ClassVar[List[str]] = ["dashboardId", "fileName", "format", "metadata", "widgetIds"] - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['PNG']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('PNG')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ImageExportRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ImageExportRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardId": obj.get("dashboardId"), - "fileName": obj.get("fileName"), - "format": obj.get("format"), - "metadata": obj.get("metadata"), - "widgetIds": obj.get("widgetIds") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/in_platform.py b/gooddata-api-client/gooddata_api_client/models/in_platform.py deleted file mode 100644 index 7ed4a4289..000000000 --- a/gooddata-api-client/gooddata_api_client/models/in_platform.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class InPlatform(BaseModel): - """ - In-platform destination for notifications. - """ # noqa: E501 - type: StrictStr = Field(description="The destination type.") - __properties: ClassVar[List[str]] = ["type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['IN_PLATFORM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('IN_PLATFORM')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of InPlatform from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of InPlatform from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/inline_filter_definition.py b/gooddata-api-client/gooddata_api_client/models/inline_filter_definition.py deleted file mode 100644 index 4dbc5d839..000000000 --- a/gooddata-api-client/gooddata_api_client/models/inline_filter_definition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.inline_filter_definition_inline import InlineFilterDefinitionInline -from typing import Optional, Set -from typing_extensions import Self - -class InlineFilterDefinition(BaseModel): - """ - Filter in form of direct MAQL query. - """ # noqa: E501 - inline: InlineFilterDefinitionInline - __properties: ClassVar[List[str]] = ["inline"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of InlineFilterDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of inline - if self.inline: - _dict['inline'] = self.inline.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of InlineFilterDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "inline": InlineFilterDefinitionInline.from_dict(obj["inline"]) if obj.get("inline") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/inline_filter_definition_inline.py b/gooddata-api-client/gooddata_api_client/models/inline_filter_definition_inline.py deleted file mode 100644 index 2cee65591..000000000 --- a/gooddata-api-client/gooddata_api_client/models/inline_filter_definition_inline.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class InlineFilterDefinitionInline(BaseModel): - """ - InlineFilterDefinitionInline - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - filter: StrictStr = Field(description="MAQL query representing the filter.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - __properties: ClassVar[List[str]] = ["applyOnResult", "filter", "localIdentifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of InlineFilterDefinitionInline from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of InlineFilterDefinitionInline from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "filter": obj.get("filter"), - "localIdentifier": obj.get("localIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/inline_measure_definition.py b/gooddata-api-client/gooddata_api_client/models/inline_measure_definition.py deleted file mode 100644 index 529c72577..000000000 --- a/gooddata-api-client/gooddata_api_client/models/inline_measure_definition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.inline_measure_definition_inline import InlineMeasureDefinitionInline -from typing import Optional, Set -from typing_extensions import Self - -class InlineMeasureDefinition(BaseModel): - """ - Metric defined by the raw MAQL query. - """ # noqa: E501 - inline: InlineMeasureDefinitionInline - __properties: ClassVar[List[str]] = ["inline"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of InlineMeasureDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of inline - if self.inline: - _dict['inline'] = self.inline.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of InlineMeasureDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "inline": InlineMeasureDefinitionInline.from_dict(obj["inline"]) if obj.get("inline") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/inline_measure_definition_inline.py b/gooddata-api-client/gooddata_api_client/models/inline_measure_definition_inline.py deleted file mode 100644 index a18070193..000000000 --- a/gooddata-api-client/gooddata_api_client/models/inline_measure_definition_inline.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class InlineMeasureDefinitionInline(BaseModel): - """ - InlineMeasureDefinitionInline - """ # noqa: E501 - maql: StrictStr = Field(description="MAQL query defining the metric.") - __properties: ClassVar[List[str]] = ["maql"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of InlineMeasureDefinitionInline from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of InlineMeasureDefinitionInline from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "maql": obj.get("maql") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/intro_slide_template.py b/gooddata-api-client/gooddata_api_client/models/intro_slide_template.py deleted file mode 100644 index f21305238..000000000 --- a/gooddata-api-client/gooddata_api_client/models/intro_slide_template.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.running_section import RunningSection -from typing import Optional, Set -from typing_extensions import Self - -class IntroSlideTemplate(BaseModel): - """ - Settings for intro slide. - """ # noqa: E501 - background_image: Optional[StrictBool] = Field(default=True, description="Show background image on the slide.", alias="backgroundImage") - description_field: Optional[StrictStr] = Field(default=None, alias="descriptionField") - footer: Optional[RunningSection] = None - header: Optional[RunningSection] = None - title_field: Optional[StrictStr] = Field(default=None, alias="titleField") - __properties: ClassVar[List[str]] = ["backgroundImage", "descriptionField", "footer", "header", "titleField"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of IntroSlideTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of footer - if self.footer: - _dict['footer'] = self.footer.to_dict() - # override the default output from pydantic by calling `to_dict()` of header - if self.header: - _dict['header'] = self.header.to_dict() - # set to None if description_field (nullable) is None - # and model_fields_set contains the field - if self.description_field is None and "description_field" in self.model_fields_set: - _dict['descriptionField'] = None - - # set to None if footer (nullable) is None - # and model_fields_set contains the field - if self.footer is None and "footer" in self.model_fields_set: - _dict['footer'] = None - - # set to None if header (nullable) is None - # and model_fields_set contains the field - if self.header is None and "header" in self.model_fields_set: - _dict['header'] = None - - # set to None if title_field (nullable) is None - # and model_fields_set contains the field - if self.title_field is None and "title_field" in self.model_fields_set: - _dict['titleField'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of IntroSlideTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "backgroundImage": obj.get("backgroundImage") if obj.get("backgroundImage") is not None else True, - "descriptionField": obj.get("descriptionField"), - "footer": RunningSection.from_dict(obj["footer"]) if obj.get("footer") is not None else None, - "header": RunningSection.from_dict(obj["header"]) if obj.get("header") is not None else None, - "titleField": obj.get("titleField") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_linkage.py deleted file mode 100644 index 6856d0936..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['aggregatedFact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('aggregatedFact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out.py deleted file mode 100644 index 53679717a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_attributes import JsonApiAggregatedFactOutAttributes -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_aggregated_fact_out_relationships import JsonApiAggregatedFactOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOut(BaseModel): - """ - JSON:API representation of aggregatedFact entity. - """ # noqa: E501 - attributes: JsonApiAggregatedFactOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAggregatedFactOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['aggregatedFact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('aggregatedFact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAggregatedFactOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAggregatedFactOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_attributes.py deleted file mode 100644 index ae2149669..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_attributes.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutAttributes(BaseModel): - """ - JsonApiAggregatedFactOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_nullable: Optional[StrictBool] = Field(default=None, alias="isNullable") - null_value: Optional[StrictStr] = Field(default=None, alias="nullValue") - operation: StrictStr - source_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="sourceColumn") - source_column_data_type: Optional[StrictStr] = Field(default=None, alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "isNullable", "nullValue", "operation", "sourceColumn", "sourceColumnDataType", "tags"] - - @field_validator('operation') - def operation_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SUM', 'MIN', 'MAX']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUM', 'MIN', 'MAX')") - return value - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "isNullable": obj.get("isNullable"), - "nullValue": obj.get("nullValue"), - "operation": obj.get("operation"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_document.py deleted file mode 100644 index cd39ae5a7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out import JsonApiAggregatedFactOut -from gooddata_api_client.models.json_api_aggregated_fact_out_includes import JsonApiAggregatedFactOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutDocument(BaseModel): - """ - JsonApiAggregatedFactOutDocument - """ # noqa: E501 - data: JsonApiAggregatedFactOut - included: Optional[List[JsonApiAggregatedFactOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAggregatedFactOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiAggregatedFactOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_includes.py deleted file mode 100644 index 0dd79f313..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_includes.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_fact_out_with_links import JsonApiFactOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIAGGREGATEDFACTOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks"] - -class JsonApiAggregatedFactOutIncludes(BaseModel): - """ - JsonApiAggregatedFactOutIncludes - """ - # data type: JsonApiDatasetOutWithLinks - oneof_schema_1_validator: Optional[JsonApiDatasetOutWithLinks] = None - # data type: JsonApiFactOutWithLinks - oneof_schema_2_validator: Optional[JsonApiFactOutWithLinks] = None - actual_instance: Optional[Union[JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiAggregatedFactOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiFactOutWithLinks - if not isinstance(v, JsonApiFactOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiFactOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAggregatedFactOutIncludes with oneOf schemas: JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiFactOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiFactOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAggregatedFactOutIncludes with oneOf schemas: JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list.py deleted file mode 100644 index 7cce60031..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_includes import JsonApiAggregatedFactOutIncludes -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_aggregated_fact_out_with_links import JsonApiAggregatedFactOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiAggregatedFactOutWithLinks] - included: Optional[List[JsonApiAggregatedFactOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAggregatedFactOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAggregatedFactOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list_meta.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list_meta.py deleted file mode 100644 index 0d249165e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_list_meta.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.page_metadata import PageMetadata -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutListMeta(BaseModel): - """ - JsonApiAggregatedFactOutListMeta - """ # noqa: E501 - page: Optional[PageMetadata] = None - __properties: ClassVar[List[str]] = ["page"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutListMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of page - if self.page: - _dict['page'] = self.page.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutListMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "page": PageMetadata.from_dict(obj["page"]) if obj.get("page") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta.py deleted file mode 100644 index 6d1f77e22..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_meta_origin import JsonApiAggregatedFactOutMetaOrigin -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutMeta(BaseModel): - """ - JsonApiAggregatedFactOutMeta - """ # noqa: E501 - origin: Optional[JsonApiAggregatedFactOutMetaOrigin] = None - __properties: ClassVar[List[str]] = ["origin"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of origin - if self.origin: - _dict['origin'] = self.origin.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "origin": JsonApiAggregatedFactOutMetaOrigin.from_dict(obj["origin"]) if obj.get("origin") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta_origin.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta_origin.py deleted file mode 100644 index f9330ce0d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_meta_origin.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutMetaOrigin(BaseModel): - """ - JsonApiAggregatedFactOutMetaOrigin - """ # noqa: E501 - origin_id: StrictStr = Field(description="defines id of the workspace where the entity comes from", alias="originId") - origin_type: StrictStr = Field(description="defines type of the origin of the entity", alias="originType") - __properties: ClassVar[List[str]] = ["originId", "originType"] - - @field_validator('origin_type') - def origin_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['NATIVE', 'PARENT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('NATIVE', 'PARENT')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutMetaOrigin from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutMetaOrigin from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "originId": obj.get("originId"), - "originType": obj.get("originType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships.py deleted file mode 100644 index 6ca454984..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_relationships_dataset import JsonApiAggregatedFactOutRelationshipsDataset -from gooddata_api_client.models.json_api_aggregated_fact_out_relationships_source_fact import JsonApiAggregatedFactOutRelationshipsSourceFact -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutRelationships(BaseModel): - """ - JsonApiAggregatedFactOutRelationships - """ # noqa: E501 - dataset: Optional[JsonApiAggregatedFactOutRelationshipsDataset] = None - source_fact: Optional[JsonApiAggregatedFactOutRelationshipsSourceFact] = Field(default=None, alias="sourceFact") - __properties: ClassVar[List[str]] = ["dataset", "sourceFact"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - # override the default output from pydantic by calling `to_dict()` of source_fact - if self.source_fact: - _dict['sourceFact'] = self.source_fact.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataset": JsonApiAggregatedFactOutRelationshipsDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "sourceFact": JsonApiAggregatedFactOutRelationshipsSourceFact.from_dict(obj["sourceFact"]) if obj.get("sourceFact") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_dataset.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_dataset.py deleted file mode 100644 index 0376260d1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_dataset.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_dataset_to_one_linkage import JsonApiDatasetToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutRelationshipsDataset(BaseModel): - """ - JsonApiAggregatedFactOutRelationshipsDataset - """ # noqa: E501 - data: Optional[JsonApiDatasetToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutRelationshipsDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutRelationshipsDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDatasetToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_source_fact.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_source_fact.py deleted file mode 100644 index 6c0685a13..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_relationships_source_fact.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_fact_to_one_linkage import JsonApiFactToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutRelationshipsSourceFact(BaseModel): - """ - JsonApiAggregatedFactOutRelationshipsSourceFact - """ # noqa: E501 - data: Optional[JsonApiFactToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutRelationshipsSourceFact from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutRelationshipsSourceFact from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFactToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_with_links.py deleted file mode 100644 index d167ab3c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_aggregated_fact_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_attributes import JsonApiAggregatedFactOutAttributes -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_aggregated_fact_out_relationships import JsonApiAggregatedFactOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAggregatedFactOutWithLinks(BaseModel): - """ - JsonApiAggregatedFactOutWithLinks - """ # noqa: E501 - attributes: JsonApiAggregatedFactOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAggregatedFactOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['aggregatedFact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('aggregatedFact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAggregatedFactOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAggregatedFactOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAggregatedFactOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in.py deleted file mode 100644 index aa254d749..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_analytical_dashboard_in_attributes import JsonApiAnalyticalDashboardInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardIn(BaseModel): - """ - JSON:API representation of analyticalDashboard entity. - """ # noqa: E501 - attributes: JsonApiAnalyticalDashboardInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAnalyticalDashboardInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_attributes.py deleted file mode 100644 index 7fb4eac67..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_attributes.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardInAttributes(BaseModel): - """ - JsonApiAnalyticalDashboardInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - summary: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="AI-generated summary of the dashboard content") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "summary", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "summary": obj.get("summary"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_document.py deleted file mode 100644 index cb51da029..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_analytical_dashboard_in import JsonApiAnalyticalDashboardIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardInDocument(BaseModel): - """ - JsonApiAnalyticalDashboardInDocument - """ # noqa: E501 - data: JsonApiAnalyticalDashboardIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAnalyticalDashboardIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_linkage.py deleted file mode 100644 index 9986f6c32..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out.py deleted file mode 100644 index 8fc48bd0d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_analytical_dashboard_out_attributes import JsonApiAnalyticalDashboardOutAttributes -from gooddata_api_client.models.json_api_analytical_dashboard_out_meta import JsonApiAnalyticalDashboardOutMeta -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships import JsonApiAnalyticalDashboardOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOut(BaseModel): - """ - JSON:API representation of analyticalDashboard entity. - """ # noqa: E501 - attributes: JsonApiAnalyticalDashboardOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAnalyticalDashboardOutMeta] = None - relationships: Optional[JsonApiAnalyticalDashboardOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAnalyticalDashboardOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAnalyticalDashboardOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAnalyticalDashboardOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_attributes.py deleted file mode 100644 index 13e093f3c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_attributes.py +++ /dev/null @@ -1,177 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutAttributes(BaseModel): - """ - JsonApiAnalyticalDashboardOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - certification: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - certification_message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.", alias="certificationMessage") - certified_at: Optional[datetime] = Field(default=None, description="Time when the certification was set.", alias="certifiedAt") - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - summary: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="AI-generated summary of the dashboard content") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "certification", "certificationMessage", "certifiedAt", "content", "createdAt", "description", "modifiedAt", "summary", "tags", "title"] - - @field_validator('certification') - def certification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('certified_at') - def certified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if certification_message (nullable) is None - # and model_fields_set contains the field - if self.certification_message is None and "certification_message" in self.model_fields_set: - _dict['certificationMessage'] = None - - # set to None if certified_at (nullable) is None - # and model_fields_set contains the field - if self.certified_at is None and "certified_at" in self.model_fields_set: - _dict['certifiedAt'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "certification": obj.get("certification"), - "certificationMessage": obj.get("certificationMessage"), - "certifiedAt": obj.get("certifiedAt"), - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "modifiedAt": obj.get("modifiedAt"), - "summary": obj.get("summary"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_document.py deleted file mode 100644 index 2284038e3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out import JsonApiAnalyticalDashboardOut -from gooddata_api_client.models.json_api_analytical_dashboard_out_includes import JsonApiAnalyticalDashboardOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutDocument(BaseModel): - """ - JsonApiAnalyticalDashboardOutDocument - """ # noqa: E501 - data: JsonApiAnalyticalDashboardOut - included: Optional[List[JsonApiAnalyticalDashboardOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAnalyticalDashboardOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiAnalyticalDashboardOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_includes.py deleted file mode 100644 index 212794fe0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_includes.py +++ /dev/null @@ -1,231 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.json_api_dashboard_plugin_out_with_links import JsonApiDashboardPluginOutWithLinks -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_filter_context_out_with_links import JsonApiFilterContextOutWithLinks -from gooddata_api_client.models.json_api_label_out_with_links import JsonApiLabelOutWithLinks -from gooddata_api_client.models.json_api_metric_out_with_links import JsonApiMetricOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.json_api_visualization_object_out_with_links import JsonApiVisualizationObjectOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIANALYTICALDASHBOARDOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardOutWithLinks", "JsonApiDashboardPluginOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFilterContextOutWithLinks", "JsonApiLabelOutWithLinks", "JsonApiMetricOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiVisualizationObjectOutWithLinks"] - -class JsonApiAnalyticalDashboardOutIncludes(BaseModel): - """ - JsonApiAnalyticalDashboardOutIncludes - """ - # data type: JsonApiUserIdentifierOutWithLinks - oneof_schema_1_validator: Optional[JsonApiUserIdentifierOutWithLinks] = None - # data type: JsonApiVisualizationObjectOutWithLinks - oneof_schema_2_validator: Optional[JsonApiVisualizationObjectOutWithLinks] = None - # data type: JsonApiAnalyticalDashboardOutWithLinks - oneof_schema_3_validator: Optional[JsonApiAnalyticalDashboardOutWithLinks] = None - # data type: JsonApiLabelOutWithLinks - oneof_schema_4_validator: Optional[JsonApiLabelOutWithLinks] = None - # data type: JsonApiMetricOutWithLinks - oneof_schema_5_validator: Optional[JsonApiMetricOutWithLinks] = None - # data type: JsonApiDatasetOutWithLinks - oneof_schema_6_validator: Optional[JsonApiDatasetOutWithLinks] = None - # data type: JsonApiFilterContextOutWithLinks - oneof_schema_7_validator: Optional[JsonApiFilterContextOutWithLinks] = None - # data type: JsonApiDashboardPluginOutWithLinks - oneof_schema_8_validator: Optional[JsonApiDashboardPluginOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardOutWithLinks, JsonApiDashboardPluginOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFilterContextOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardOutWithLinks", "JsonApiDashboardPluginOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFilterContextOutWithLinks", "JsonApiLabelOutWithLinks", "JsonApiMetricOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiVisualizationObjectOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiAnalyticalDashboardOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserIdentifierOutWithLinks - if not isinstance(v, JsonApiUserIdentifierOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiVisualizationObjectOutWithLinks - if not isinstance(v, JsonApiVisualizationObjectOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiVisualizationObjectOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAnalyticalDashboardOutWithLinks - if not isinstance(v, JsonApiAnalyticalDashboardOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiLabelOutWithLinks - if not isinstance(v, JsonApiLabelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiLabelOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiMetricOutWithLinks - if not isinstance(v, JsonApiMetricOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiMetricOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiFilterContextOutWithLinks - if not isinstance(v, JsonApiFilterContextOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiFilterContextOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiDashboardPluginOutWithLinks - if not isinstance(v, JsonApiDashboardPluginOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDashboardPluginOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAnalyticalDashboardOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiDashboardPluginOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFilterContextOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserIdentifierOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiVisualizationObjectOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiVisualizationObjectOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAnalyticalDashboardOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiLabelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiLabelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiMetricOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiMetricOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiFilterContextOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiFilterContextOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiDashboardPluginOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDashboardPluginOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAnalyticalDashboardOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiDashboardPluginOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFilterContextOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardOutWithLinks, JsonApiDashboardPluginOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFilterContextOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_list.py deleted file mode 100644 index 7d716abba..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_analytical_dashboard_out_includes import JsonApiAnalyticalDashboardOutIncludes -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiAnalyticalDashboardOutWithLinks] - included: Optional[List[JsonApiAnalyticalDashboardOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAnalyticalDashboardOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAnalyticalDashboardOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta.py deleted file mode 100644 index c13d36740..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_meta_origin import JsonApiAggregatedFactOutMetaOrigin -from gooddata_api_client.models.json_api_analytical_dashboard_out_meta_access_info import JsonApiAnalyticalDashboardOutMetaAccessInfo -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutMeta(BaseModel): - """ - JsonApiAnalyticalDashboardOutMeta - """ # noqa: E501 - access_info: Optional[JsonApiAnalyticalDashboardOutMetaAccessInfo] = Field(default=None, alias="accessInfo") - origin: Optional[JsonApiAggregatedFactOutMetaOrigin] = None - permissions: Optional[List[StrictStr]] = Field(default=None, description="List of valid permissions for a logged-in user.") - __properties: ClassVar[List[str]] = ["accessInfo", "origin", "permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['EDIT', 'SHARE', 'VIEW']): - raise ValueError("each list item must be one of ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of access_info - if self.access_info: - _dict['accessInfo'] = self.access_info.to_dict() - # override the default output from pydantic by calling `to_dict()` of origin - if self.origin: - _dict['origin'] = self.origin.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "accessInfo": JsonApiAnalyticalDashboardOutMetaAccessInfo.from_dict(obj["accessInfo"]) if obj.get("accessInfo") is not None else None, - "origin": JsonApiAggregatedFactOutMetaOrigin.from_dict(obj["origin"]) if obj.get("origin") is not None else None, - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta_access_info.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta_access_info.py deleted file mode 100644 index 273cfc0a2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_meta_access_info.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutMetaAccessInfo(BaseModel): - """ - JsonApiAnalyticalDashboardOutMetaAccessInfo - """ # noqa: E501 - private: StrictBool = Field(description="is the entity private to the currently logged-in user") - __properties: ClassVar[List[str]] = ["private"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutMetaAccessInfo from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutMetaAccessInfo from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "private": obj.get("private") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships.py deleted file mode 100644 index a19e64cf8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships.py +++ /dev/null @@ -1,144 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_analytical_dashboards import JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_dashboard_plugins import JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_datasets import JsonApiAnalyticalDashboardOutRelationshipsDatasets -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_filter_contexts import JsonApiAnalyticalDashboardOutRelationshipsFilterContexts -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_labels import JsonApiAnalyticalDashboardOutRelationshipsLabels -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_metrics import JsonApiAnalyticalDashboardOutRelationshipsMetrics -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_visualization_objects import JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationships(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationships - """ # noqa: E501 - analytical_dashboards: Optional[JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards] = Field(default=None, alias="analyticalDashboards") - certified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="certifiedBy") - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - dashboard_plugins: Optional[JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins] = Field(default=None, alias="dashboardPlugins") - datasets: Optional[JsonApiAnalyticalDashboardOutRelationshipsDatasets] = None - filter_contexts: Optional[JsonApiAnalyticalDashboardOutRelationshipsFilterContexts] = Field(default=None, alias="filterContexts") - labels: Optional[JsonApiAnalyticalDashboardOutRelationshipsLabels] = None - metrics: Optional[JsonApiAnalyticalDashboardOutRelationshipsMetrics] = None - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - visualization_objects: Optional[JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects] = Field(default=None, alias="visualizationObjects") - __properties: ClassVar[List[str]] = ["analyticalDashboards", "certifiedBy", "createdBy", "dashboardPlugins", "datasets", "filterContexts", "labels", "metrics", "modifiedBy", "visualizationObjects"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboards - if self.analytical_dashboards: - _dict['analyticalDashboards'] = self.analytical_dashboards.to_dict() - # override the default output from pydantic by calling `to_dict()` of certified_by - if self.certified_by: - _dict['certifiedBy'] = self.certified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of dashboard_plugins - if self.dashboard_plugins: - _dict['dashboardPlugins'] = self.dashboard_plugins.to_dict() - # override the default output from pydantic by calling `to_dict()` of datasets - if self.datasets: - _dict['datasets'] = self.datasets.to_dict() - # override the default output from pydantic by calling `to_dict()` of filter_contexts - if self.filter_contexts: - _dict['filterContexts'] = self.filter_contexts.to_dict() - # override the default output from pydantic by calling `to_dict()` of labels - if self.labels: - _dict['labels'] = self.labels.to_dict() - # override the default output from pydantic by calling `to_dict()` of metrics - if self.metrics: - _dict['metrics'] = self.metrics.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of visualization_objects - if self.visualization_objects: - _dict['visualizationObjects'] = self.visualization_objects.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboards": JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards.from_dict(obj["analyticalDashboards"]) if obj.get("analyticalDashboards") is not None else None, - "certifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["certifiedBy"]) if obj.get("certifiedBy") is not None else None, - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "dashboardPlugins": JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins.from_dict(obj["dashboardPlugins"]) if obj.get("dashboardPlugins") is not None else None, - "datasets": JsonApiAnalyticalDashboardOutRelationshipsDatasets.from_dict(obj["datasets"]) if obj.get("datasets") is not None else None, - "filterContexts": JsonApiAnalyticalDashboardOutRelationshipsFilterContexts.from_dict(obj["filterContexts"]) if obj.get("filterContexts") is not None else None, - "labels": JsonApiAnalyticalDashboardOutRelationshipsLabels.from_dict(obj["labels"]) if obj.get("labels") is not None else None, - "metrics": JsonApiAnalyticalDashboardOutRelationshipsMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "visualizationObjects": JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects.from_dict(obj["visualizationObjects"]) if obj.get("visualizationObjects") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_analytical_dashboards.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_analytical_dashboards.py deleted file mode 100644 index b5cb26db0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_analytical_dashboards.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_analytical_dashboard_linkage import JsonApiAnalyticalDashboardLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards - """ # noqa: E501 - data: List[JsonApiAnalyticalDashboardLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsAnalyticalDashboards from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAnalyticalDashboardLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_certified_by.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_certified_by.py deleted file mode 100644 index 06f6585a7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_certified_by.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_identifier_to_one_linkage import JsonApiUserIdentifierToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy - """ # noqa: E501 - data: Optional[JsonApiUserIdentifierToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserIdentifierToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_dashboard_plugins.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_dashboard_plugins.py deleted file mode 100644 index 8ab940b7a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_dashboard_plugins.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_dashboard_plugin_linkage import JsonApiDashboardPluginLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins - """ # noqa: E501 - data: List[JsonApiDashboardPluginLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsDashboardPlugins from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiDashboardPluginLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_datasets.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_datasets.py deleted file mode 100644 index 03df24105..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_datasets.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_dataset_linkage import JsonApiDatasetLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsDatasets(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsDatasets - """ # noqa: E501 - data: List[JsonApiDatasetLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsDatasets from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsDatasets from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiDatasetLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_filter_contexts.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_filter_contexts.py deleted file mode 100644 index b42ec503b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_filter_contexts.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_filter_context_linkage import JsonApiFilterContextLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsFilterContexts(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsFilterContexts - """ # noqa: E501 - data: List[JsonApiFilterContextLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsFilterContexts from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsFilterContexts from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiFilterContextLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_labels.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_labels.py deleted file mode 100644 index 24fff6634..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_labels.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_label_linkage import JsonApiLabelLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsLabels(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsLabels - """ # noqa: E501 - data: List[JsonApiLabelLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsLabels from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsLabels from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiLabelLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_metrics.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_metrics.py deleted file mode 100644 index 7e916f58d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_metrics.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_metric_linkage import JsonApiMetricLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsMetrics(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsMetrics - """ # noqa: E501 - data: List[JsonApiMetricLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsMetrics from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsMetrics from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiMetricLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_visualization_objects.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_visualization_objects.py deleted file mode 100644 index a2ae6df1f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_relationships_visualization_objects.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_visualization_object_linkage import JsonApiVisualizationObjectLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects(BaseModel): - """ - JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects - """ # noqa: E501 - data: List[JsonApiVisualizationObjectLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutRelationshipsVisualizationObjects from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiVisualizationObjectLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_with_links.py deleted file mode 100644 index 6f574b0e0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_analytical_dashboard_out_attributes import JsonApiAnalyticalDashboardOutAttributes -from gooddata_api_client.models.json_api_analytical_dashboard_out_meta import JsonApiAnalyticalDashboardOutMeta -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships import JsonApiAnalyticalDashboardOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardOutWithLinks(BaseModel): - """ - JsonApiAnalyticalDashboardOutWithLinks - """ # noqa: E501 - attributes: JsonApiAnalyticalDashboardOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAnalyticalDashboardOutMeta] = None - relationships: Optional[JsonApiAnalyticalDashboardOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAnalyticalDashboardOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAnalyticalDashboardOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAnalyticalDashboardOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch.py deleted file mode 100644 index 4ade62b7e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_analytical_dashboard_patch_attributes import JsonApiAnalyticalDashboardPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardPatch(BaseModel): - """ - JSON:API representation of patching analyticalDashboard entity. - """ # noqa: E501 - attributes: JsonApiAnalyticalDashboardPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAnalyticalDashboardPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_attributes.py deleted file mode 100644 index 27eabfd92..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_attributes.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardPatchAttributes(BaseModel): - """ - JsonApiAnalyticalDashboardPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - summary: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="AI-generated summary of the dashboard content") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "summary", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "summary": obj.get("summary"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_document.py deleted file mode 100644 index da99bd147..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_analytical_dashboard_patch import JsonApiAnalyticalDashboardPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardPatchDocument(BaseModel): - """ - JsonApiAnalyticalDashboardPatchDocument - """ # noqa: E501 - data: JsonApiAnalyticalDashboardPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAnalyticalDashboardPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id.py deleted file mode 100644 index 18a6193f0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_analytical_dashboard_in_attributes import JsonApiAnalyticalDashboardInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardPostOptionalId(BaseModel): - """ - JSON:API representation of analyticalDashboard entity. - """ # noqa: E501 - attributes: JsonApiAnalyticalDashboardInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAnalyticalDashboardInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id_document.py deleted file mode 100644 index 180b1fb98..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_analytical_dashboard_post_optional_id import JsonApiAnalyticalDashboardPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAnalyticalDashboardPostOptionalIdDocument(BaseModel): - """ - JsonApiAnalyticalDashboardPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiAnalyticalDashboardPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAnalyticalDashboardPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAnalyticalDashboardPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_to_one_linkage.py deleted file mode 100644 index dfe11d0ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_analytical_dashboard_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_linkage import JsonApiAnalyticalDashboardLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIANALYTICALDASHBOARDTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardLinkage"] - -class JsonApiAnalyticalDashboardToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiAnalyticalDashboardLinkage - oneof_schema_1_validator: Optional[JsonApiAnalyticalDashboardLinkage] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiAnalyticalDashboardToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiAnalyticalDashboardLinkage - if not isinstance(v, JsonApiAnalyticalDashboardLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAnalyticalDashboardToOneLinkage with oneOf schemas: JsonApiAnalyticalDashboardLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiAnalyticalDashboardLinkage - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAnalyticalDashboardToOneLinkage with oneOf schemas: JsonApiAnalyticalDashboardLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_in.py deleted file mode 100644 index dae80af1d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_in.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenIn(BaseModel): - """ - JSON:API representation of apiToken entity. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['apiToken']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('apiToken')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_in_document.py deleted file mode 100644 index a47d6a766..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_api_token_in import JsonApiApiTokenIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenInDocument(BaseModel): - """ - JsonApiApiTokenInDocument - """ # noqa: E501 - data: JsonApiApiTokenIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiApiTokenIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out.py deleted file mode 100644 index 7237e096b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_api_token_out_attributes import JsonApiApiTokenOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenOut(BaseModel): - """ - JSON:API representation of apiToken entity. - """ # noqa: E501 - attributes: Optional[JsonApiApiTokenOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['apiToken']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('apiToken')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiApiTokenOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_attributes.py deleted file mode 100644 index 9cc62d6a8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_attributes.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenOutAttributes(BaseModel): - """ - JsonApiApiTokenOutAttributes - """ # noqa: E501 - bearer_token: Optional[StrictStr] = Field(default=None, description="The value of the Bearer token. It is only returned when the API token is created.", alias="bearerToken") - __properties: ClassVar[List[str]] = ["bearerToken"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "bearerToken": obj.get("bearerToken") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_document.py deleted file mode 100644 index 912f4e9fe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_api_token_out import JsonApiApiTokenOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenOutDocument(BaseModel): - """ - JsonApiApiTokenOutDocument - """ # noqa: E501 - data: JsonApiApiTokenOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiApiTokenOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_list.py deleted file mode 100644 index e5c8d3ab8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_api_token_out_with_links import JsonApiApiTokenOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiApiTokenOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiApiTokenOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_with_links.py deleted file mode 100644 index f571b1ef5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_api_token_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_api_token_out_attributes import JsonApiApiTokenOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiApiTokenOutWithLinks(BaseModel): - """ - JsonApiApiTokenOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiApiTokenOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['apiToken']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('apiToken')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiApiTokenOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiApiTokenOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in.py deleted file mode 100644 index f94a8de5b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_attribute_hierarchy_in_attributes import JsonApiAttributeHierarchyInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyIn(BaseModel): - """ - JSON:API representation of attributeHierarchy entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attributeHierarchy']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attributeHierarchy')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_attributes.py deleted file mode 100644 index 045f4386f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_attributes.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyInAttributes(BaseModel): - """ - JsonApiAttributeHierarchyInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 15000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_document.py deleted file mode 100644 index e3605a14d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_attribute_hierarchy_in import JsonApiAttributeHierarchyIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyInDocument(BaseModel): - """ - JsonApiAttributeHierarchyInDocument - """ # noqa: E501 - data: JsonApiAttributeHierarchyIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAttributeHierarchyIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_linkage.py deleted file mode 100644 index ad2fbd1c9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attributeHierarchy']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attributeHierarchy')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out.py deleted file mode 100644 index 1f2e23891..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_attribute_hierarchy_out_attributes import JsonApiAttributeHierarchyOutAttributes -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships import JsonApiAttributeHierarchyOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOut(BaseModel): - """ - JSON:API representation of attributeHierarchy entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAttributeHierarchyOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attributeHierarchy']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attributeHierarchy')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAttributeHierarchyOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_attributes.py deleted file mode 100644 index 0a98cb97b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_attributes.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOutAttributes(BaseModel): - """ - JsonApiAttributeHierarchyOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 15000 characters.") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "createdAt", "description", "modifiedAt", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "modifiedAt": obj.get("modifiedAt"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_document.py deleted file mode 100644 index ba4f53b5e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_attribute_hierarchy_out import JsonApiAttributeHierarchyOut -from gooddata_api_client.models.json_api_attribute_hierarchy_out_includes import JsonApiAttributeHierarchyOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOutDocument(BaseModel): - """ - JsonApiAttributeHierarchyOutDocument - """ # noqa: E501 - data: JsonApiAttributeHierarchyOut - included: Optional[List[JsonApiAttributeHierarchyOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAttributeHierarchyOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiAttributeHierarchyOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_includes.py deleted file mode 100644 index 7f577e377..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_includes.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIATTRIBUTEHIERARCHYOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAttributeOutWithLinks", "JsonApiUserIdentifierOutWithLinks"] - -class JsonApiAttributeHierarchyOutIncludes(BaseModel): - """ - JsonApiAttributeHierarchyOutIncludes - """ - # data type: JsonApiUserIdentifierOutWithLinks - oneof_schema_1_validator: Optional[JsonApiUserIdentifierOutWithLinks] = None - # data type: JsonApiAttributeOutWithLinks - oneof_schema_2_validator: Optional[JsonApiAttributeOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAttributeOutWithLinks, JsonApiUserIdentifierOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAttributeOutWithLinks", "JsonApiUserIdentifierOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiAttributeHierarchyOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserIdentifierOutWithLinks - if not isinstance(v, JsonApiUserIdentifierOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAttributeOutWithLinks - if not isinstance(v, JsonApiAttributeOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAttributeHierarchyOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiUserIdentifierOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserIdentifierOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAttributeOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAttributeOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAttributeHierarchyOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiUserIdentifierOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAttributeOutWithLinks, JsonApiUserIdentifierOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_list.py deleted file mode 100644 index be5d8a0d0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_attribute_hierarchy_out_includes import JsonApiAttributeHierarchyOutIncludes -from gooddata_api_client.models.json_api_attribute_hierarchy_out_with_links import JsonApiAttributeHierarchyOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiAttributeHierarchyOutWithLinks] - included: Optional[List[JsonApiAttributeHierarchyOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAttributeHierarchyOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAttributeHierarchyOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships.py deleted file mode 100644 index c32c6024d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships.py +++ /dev/null @@ -1,103 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships_attributes import JsonApiAttributeHierarchyOutRelationshipsAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOutRelationships(BaseModel): - """ - JsonApiAttributeHierarchyOutRelationships - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyOutRelationshipsAttributes] = None - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - __properties: ClassVar[List[str]] = ["attributes", "createdBy", "modifiedBy"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyOutRelationshipsAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships_attributes.py deleted file mode 100644 index 16be58701..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_relationships_attributes.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_attribute_linkage import JsonApiAttributeLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOutRelationshipsAttributes(BaseModel): - """ - JsonApiAttributeHierarchyOutRelationshipsAttributes - """ # noqa: E501 - data: List[JsonApiAttributeLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutRelationshipsAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutRelationshipsAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAttributeLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_with_links.py deleted file mode 100644 index 6ba6dae70..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_attribute_hierarchy_out_attributes import JsonApiAttributeHierarchyOutAttributes -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships import JsonApiAttributeHierarchyOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyOutWithLinks(BaseModel): - """ - JsonApiAttributeHierarchyOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAttributeHierarchyOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attributeHierarchy']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attributeHierarchy')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAttributeHierarchyOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch.py deleted file mode 100644 index 5bd40d12d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_attribute_hierarchy_in_attributes import JsonApiAttributeHierarchyInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyPatch(BaseModel): - """ - JSON:API representation of patching attributeHierarchy entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attributeHierarchy']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attributeHierarchy')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch_document.py deleted file mode 100644 index 9dece1580..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_hierarchy_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_attribute_hierarchy_patch import JsonApiAttributeHierarchyPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeHierarchyPatchDocument(BaseModel): - """ - JsonApiAttributeHierarchyPatchDocument - """ # noqa: E501 - data: JsonApiAttributeHierarchyPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeHierarchyPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAttributeHierarchyPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_linkage.py deleted file mode 100644 index 433aa7878..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out.py deleted file mode 100644 index 1fc6e69ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_attribute_out_attributes import JsonApiAttributeOutAttributes -from gooddata_api_client.models.json_api_attribute_out_relationships import JsonApiAttributeOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOut(BaseModel): - """ - JSON:API representation of attribute entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributeOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAttributeOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAttributeOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_attributes.py deleted file mode 100644 index 4f4ee1da1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_attributes.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutAttributes(BaseModel): - """ - JsonApiAttributeOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - granularity: Optional[StrictStr] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - is_nullable: Optional[StrictBool] = Field(default=None, alias="isNullable") - locale: Optional[StrictStr] = None - null_value: Optional[StrictStr] = Field(default=None, alias="nullValue") - sort_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="sortColumn") - sort_direction: Optional[StrictStr] = Field(default=None, alias="sortDirection") - source_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="sourceColumn") - source_column_data_type: Optional[StrictStr] = Field(default=None, alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "granularity", "isHidden", "isNullable", "locale", "nullValue", "sortColumn", "sortDirection", "sourceColumn", "sourceColumnDataType", "tags", "title"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - @field_validator('sort_direction') - def sort_direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "granularity": obj.get("granularity"), - "isHidden": obj.get("isHidden"), - "isNullable": obj.get("isNullable"), - "locale": obj.get("locale"), - "nullValue": obj.get("nullValue"), - "sortColumn": obj.get("sortColumn"), - "sortDirection": obj.get("sortDirection"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_document.py deleted file mode 100644 index e1fc379eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_attribute_out import JsonApiAttributeOut -from gooddata_api_client.models.json_api_attribute_out_includes import JsonApiAttributeOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutDocument(BaseModel): - """ - JsonApiAttributeOutDocument - """ # noqa: E501 - data: JsonApiAttributeOut - included: Optional[List[JsonApiAttributeOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAttributeOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiAttributeOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_includes.py deleted file mode 100644 index 09b4f9ecc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_includes.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_attribute_hierarchy_out_with_links import JsonApiAttributeHierarchyOutWithLinks -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_label_out_with_links import JsonApiLabelOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIATTRIBUTEOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAttributeHierarchyOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiLabelOutWithLinks"] - -class JsonApiAttributeOutIncludes(BaseModel): - """ - JsonApiAttributeOutIncludes - """ - # data type: JsonApiDatasetOutWithLinks - oneof_schema_1_validator: Optional[JsonApiDatasetOutWithLinks] = None - # data type: JsonApiLabelOutWithLinks - oneof_schema_2_validator: Optional[JsonApiLabelOutWithLinks] = None - # data type: JsonApiAttributeHierarchyOutWithLinks - oneof_schema_3_validator: Optional[JsonApiAttributeHierarchyOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAttributeHierarchyOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAttributeHierarchyOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiLabelOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiAttributeOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiLabelOutWithLinks - if not isinstance(v, JsonApiLabelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiLabelOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAttributeHierarchyOutWithLinks - if not isinstance(v, JsonApiAttributeHierarchyOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeHierarchyOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAttributeOutIncludes with oneOf schemas: JsonApiAttributeHierarchyOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiLabelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiLabelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAttributeHierarchyOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAttributeHierarchyOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAttributeOutIncludes with oneOf schemas: JsonApiAttributeHierarchyOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAttributeHierarchyOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_list.py deleted file mode 100644 index d7cd39461..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_attribute_out_includes import JsonApiAttributeOutIncludes -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiAttributeOutWithLinks] - included: Optional[List[JsonApiAttributeOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAttributeOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAttributeOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships.py deleted file mode 100644 index 7de4a28ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_relationships_dataset import JsonApiAggregatedFactOutRelationshipsDataset -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_labels import JsonApiAnalyticalDashboardOutRelationshipsLabels -from gooddata_api_client.models.json_api_attribute_out_relationships_attribute_hierarchies import JsonApiAttributeOutRelationshipsAttributeHierarchies -from gooddata_api_client.models.json_api_attribute_out_relationships_default_view import JsonApiAttributeOutRelationshipsDefaultView -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutRelationships(BaseModel): - """ - JsonApiAttributeOutRelationships - """ # noqa: E501 - attribute_hierarchies: Optional[JsonApiAttributeOutRelationshipsAttributeHierarchies] = Field(default=None, alias="attributeHierarchies") - dataset: Optional[JsonApiAggregatedFactOutRelationshipsDataset] = None - default_view: Optional[JsonApiAttributeOutRelationshipsDefaultView] = Field(default=None, alias="defaultView") - labels: Optional[JsonApiAnalyticalDashboardOutRelationshipsLabels] = None - __properties: ClassVar[List[str]] = ["attributeHierarchies", "dataset", "defaultView", "labels"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute_hierarchies - if self.attribute_hierarchies: - _dict['attributeHierarchies'] = self.attribute_hierarchies.to_dict() - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - # override the default output from pydantic by calling `to_dict()` of default_view - if self.default_view: - _dict['defaultView'] = self.default_view.to_dict() - # override the default output from pydantic by calling `to_dict()` of labels - if self.labels: - _dict['labels'] = self.labels.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeHierarchies": JsonApiAttributeOutRelationshipsAttributeHierarchies.from_dict(obj["attributeHierarchies"]) if obj.get("attributeHierarchies") is not None else None, - "dataset": JsonApiAggregatedFactOutRelationshipsDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "defaultView": JsonApiAttributeOutRelationshipsDefaultView.from_dict(obj["defaultView"]) if obj.get("defaultView") is not None else None, - "labels": JsonApiAnalyticalDashboardOutRelationshipsLabels.from_dict(obj["labels"]) if obj.get("labels") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_attribute_hierarchies.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_attribute_hierarchies.py deleted file mode 100644 index 46efbca3f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_attribute_hierarchies.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_attribute_hierarchy_linkage import JsonApiAttributeHierarchyLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutRelationshipsAttributeHierarchies(BaseModel): - """ - JsonApiAttributeOutRelationshipsAttributeHierarchies - """ # noqa: E501 - data: List[JsonApiAttributeHierarchyLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutRelationshipsAttributeHierarchies from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutRelationshipsAttributeHierarchies from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAttributeHierarchyLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_default_view.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_default_view.py deleted file mode 100644 index 816513d92..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_relationships_default_view.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_label_to_one_linkage import JsonApiLabelToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutRelationshipsDefaultView(BaseModel): - """ - JsonApiAttributeOutRelationshipsDefaultView - """ # noqa: E501 - data: Optional[JsonApiLabelToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutRelationshipsDefaultView from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutRelationshipsDefaultView from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLabelToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_with_links.py deleted file mode 100644 index 1ec839b42..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_attribute_out_attributes import JsonApiAttributeOutAttributes -from gooddata_api_client.models.json_api_attribute_out_relationships import JsonApiAttributeOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributeOutWithLinks(BaseModel): - """ - JsonApiAttributeOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiAttributeOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAttributeOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributeOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAttributeOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch.py deleted file mode 100644 index 329751808..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_attribute_patch_attributes import JsonApiAttributePatchAttributes -from gooddata_api_client.models.json_api_attribute_patch_relationships import JsonApiAttributePatchRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributePatch(BaseModel): - """ - JSON:API representation of patching attribute entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributePatchAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiAttributePatchRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiAttributePatchRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_attributes.py deleted file mode 100644 index bec450448..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_attributes.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributePatchAttributes(BaseModel): - """ - JsonApiAttributePatchAttributes - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["description", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributePatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributePatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_document.py deleted file mode 100644 index 8de3d5bff..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_attribute_patch import JsonApiAttributePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributePatchDocument(BaseModel): - """ - JsonApiAttributePatchDocument - """ # noqa: E501 - data: JsonApiAttributePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAttributePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_relationships.py deleted file mode 100644 index 1bc6586ec..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_patch_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_attribute_out_relationships_default_view import JsonApiAttributeOutRelationshipsDefaultView -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAttributePatchRelationships(BaseModel): - """ - JsonApiAttributePatchRelationships - """ # noqa: E501 - default_view: Optional[JsonApiAttributeOutRelationshipsDefaultView] = Field(default=None, alias="defaultView") - __properties: ClassVar[List[str]] = ["defaultView"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAttributePatchRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of default_view - if self.default_view: - _dict['defaultView'] = self.default_view.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAttributePatchRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "defaultView": JsonApiAttributeOutRelationshipsDefaultView.from_dict(obj["defaultView"]) if obj.get("defaultView") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_attribute_to_one_linkage.py deleted file mode 100644 index 8ac463f66..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_attribute_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_attribute_linkage import JsonApiAttributeLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIATTRIBUTETOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiAttributeLinkage"] - -class JsonApiAttributeToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiAttributeLinkage - oneof_schema_1_validator: Optional[JsonApiAttributeLinkage] = None - actual_instance: Optional[Union[JsonApiAttributeLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiAttributeLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiAttributeToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiAttributeLinkage - if not isinstance(v, JsonApiAttributeLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAttributeToOneLinkage with oneOf schemas: JsonApiAttributeLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiAttributeLinkage - try: - if match == 0: - instance.actual_instance = JsonApiAttributeLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAttributeToOneLinkage with oneOf schemas: JsonApiAttributeLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAttributeLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in.py deleted file mode 100644 index 3c5e39075..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_in_attributes import JsonApiAutomationInAttributes -from gooddata_api_client.models.json_api_automation_in_relationships import JsonApiAutomationInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationIn(BaseModel): - """ - JSON:API representation of automation entity. - """ # noqa: E501 - attributes: Optional[JsonApiAutomationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiAutomationInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAutomationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiAutomationInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes.py deleted file mode 100644 index a972ab707..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes.py +++ /dev/null @@ -1,216 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_in_attributes_alert import JsonApiAutomationInAttributesAlert -from gooddata_api_client.models.json_api_automation_in_attributes_dashboard_tabular_exports_inner import JsonApiAutomationInAttributesDashboardTabularExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_external_recipients_inner import JsonApiAutomationInAttributesExternalRecipientsInner -from gooddata_api_client.models.json_api_automation_in_attributes_image_exports_inner import JsonApiAutomationInAttributesImageExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_metadata import JsonApiAutomationInAttributesMetadata -from gooddata_api_client.models.json_api_automation_in_attributes_raw_exports_inner import JsonApiAutomationInAttributesRawExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_schedule import JsonApiAutomationInAttributesSchedule -from gooddata_api_client.models.json_api_automation_in_attributes_slides_exports_inner import JsonApiAutomationInAttributesSlidesExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_tabular_exports_inner import JsonApiAutomationInAttributesTabularExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_visual_exports_inner import JsonApiAutomationInAttributesVisualExportsInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributes(BaseModel): - """ - JsonApiAutomationInAttributes - """ # noqa: E501 - alert: Optional[JsonApiAutomationInAttributesAlert] = None - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - dashboard_tabular_exports: Optional[List[JsonApiAutomationInAttributesDashboardTabularExportsInner]] = Field(default=None, alias="dashboardTabularExports") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - details: Optional[Dict[str, Any]] = Field(default=None, description="Additional details to be included in the automated message.") - evaluation_mode: Optional[StrictStr] = Field(default=None, description="Specify automation evaluation mode.", alias="evaluationMode") - external_recipients: Optional[List[JsonApiAutomationInAttributesExternalRecipientsInner]] = Field(default=None, description="External recipients of the automation action results.", alias="externalRecipients") - image_exports: Optional[List[JsonApiAutomationInAttributesImageExportsInner]] = Field(default=None, alias="imageExports") - metadata: Optional[JsonApiAutomationInAttributesMetadata] = None - raw_exports: Optional[List[JsonApiAutomationInAttributesRawExportsInner]] = Field(default=None, alias="rawExports") - schedule: Optional[JsonApiAutomationInAttributesSchedule] = None - slides_exports: Optional[List[JsonApiAutomationInAttributesSlidesExportsInner]] = Field(default=None, alias="slidesExports") - state: Optional[StrictStr] = Field(default=None, description="Current state of the automation.") - tabular_exports: Optional[List[JsonApiAutomationInAttributesTabularExportsInner]] = Field(default=None, alias="tabularExports") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - visual_exports: Optional[List[JsonApiAutomationInAttributesVisualExportsInner]] = Field(default=None, alias="visualExports") - __properties: ClassVar[List[str]] = ["alert", "areRelationsValid", "dashboardTabularExports", "description", "details", "evaluationMode", "externalRecipients", "imageExports", "metadata", "rawExports", "schedule", "slidesExports", "state", "tabularExports", "tags", "title", "visualExports"] - - @field_validator('evaluation_mode') - def evaluation_mode_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SHARED', 'PER_RECIPIENT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SHARED', 'PER_RECIPIENT')") - return value - - @field_validator('state') - def state_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ACTIVE', 'PAUSED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ACTIVE', 'PAUSED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of alert - if self.alert: - _dict['alert'] = self.alert.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_tabular_exports (list) - _items = [] - if self.dashboard_tabular_exports: - for _item_dashboard_tabular_exports in self.dashboard_tabular_exports: - if _item_dashboard_tabular_exports: - _items.append(_item_dashboard_tabular_exports.to_dict()) - _dict['dashboardTabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in external_recipients (list) - _items = [] - if self.external_recipients: - for _item_external_recipients in self.external_recipients: - if _item_external_recipients: - _items.append(_item_external_recipients.to_dict()) - _dict['externalRecipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in image_exports (list) - _items = [] - if self.image_exports: - for _item_image_exports in self.image_exports: - if _item_image_exports: - _items.append(_item_image_exports.to_dict()) - _dict['imageExports'] = _items - # override the default output from pydantic by calling `to_dict()` of metadata - if self.metadata: - _dict['metadata'] = self.metadata.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in raw_exports (list) - _items = [] - if self.raw_exports: - for _item_raw_exports in self.raw_exports: - if _item_raw_exports: - _items.append(_item_raw_exports.to_dict()) - _dict['rawExports'] = _items - # override the default output from pydantic by calling `to_dict()` of schedule - if self.schedule: - _dict['schedule'] = self.schedule.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in slides_exports (list) - _items = [] - if self.slides_exports: - for _item_slides_exports in self.slides_exports: - if _item_slides_exports: - _items.append(_item_slides_exports.to_dict()) - _dict['slidesExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tabular_exports (list) - _items = [] - if self.tabular_exports: - for _item_tabular_exports in self.tabular_exports: - if _item_tabular_exports: - _items.append(_item_tabular_exports.to_dict()) - _dict['tabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visual_exports (list) - _items = [] - if self.visual_exports: - for _item_visual_exports in self.visual_exports: - if _item_visual_exports: - _items.append(_item_visual_exports.to_dict()) - _dict['visualExports'] = _items - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alert": JsonApiAutomationInAttributesAlert.from_dict(obj["alert"]) if obj.get("alert") is not None else None, - "areRelationsValid": obj.get("areRelationsValid"), - "dashboardTabularExports": [JsonApiAutomationInAttributesDashboardTabularExportsInner.from_dict(_item) for _item in obj["dashboardTabularExports"]] if obj.get("dashboardTabularExports") is not None else None, - "description": obj.get("description"), - "details": obj.get("details"), - "evaluationMode": obj.get("evaluationMode"), - "externalRecipients": [JsonApiAutomationInAttributesExternalRecipientsInner.from_dict(_item) for _item in obj["externalRecipients"]] if obj.get("externalRecipients") is not None else None, - "imageExports": [JsonApiAutomationInAttributesImageExportsInner.from_dict(_item) for _item in obj["imageExports"]] if obj.get("imageExports") is not None else None, - "metadata": JsonApiAutomationInAttributesMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, - "rawExports": [JsonApiAutomationInAttributesRawExportsInner.from_dict(_item) for _item in obj["rawExports"]] if obj.get("rawExports") is not None else None, - "schedule": JsonApiAutomationInAttributesSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, - "slidesExports": [JsonApiAutomationInAttributesSlidesExportsInner.from_dict(_item) for _item in obj["slidesExports"]] if obj.get("slidesExports") is not None else None, - "state": obj.get("state"), - "tabularExports": [JsonApiAutomationInAttributesTabularExportsInner.from_dict(_item) for _item in obj["tabularExports"]] if obj.get("tabularExports") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "visualExports": [JsonApiAutomationInAttributesVisualExportsInner.from_dict(_item) for _item in obj["visualExports"]] if obj.get("visualExports") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_alert.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_alert.py deleted file mode 100644 index 516ec802e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_alert.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.alert_afm import AlertAfm -from gooddata_api_client.models.alert_condition import AlertCondition -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesAlert(BaseModel): - """ - JsonApiAutomationInAttributesAlert - """ # noqa: E501 - condition: AlertCondition - execution: AlertAfm - interval: Optional[StrictStr] = Field(default=None, description="Date granularity for the interval of ONCE_PER_INTERVAL trigger. Supported granularities: DAY, WEEK, MONTH, QUARTER, YEAR.") - trigger: Optional[StrictStr] = Field(default='ALWAYS', description="Trigger behavior for the alert. ALWAYS - alert is triggered every time the condition is met. ONCE - alert is triggered only once when the condition is met. ONCE_PER_INTERVAL - alert is triggered when the condition is met, then suppressed for the interval. If no interval is specified, it behaves as ALWAYS. ") - __properties: ClassVar[List[str]] = ["condition", "execution", "interval", "trigger"] - - @field_validator('interval') - def interval_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('trigger') - def trigger_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'ONCE', 'ONCE_PER_INTERVAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'ONCE', 'ONCE_PER_INTERVAL')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesAlert from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of condition - if self.condition: - _dict['condition'] = self.condition.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution - if self.execution: - _dict['execution'] = self.execution.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesAlert from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "condition": AlertCondition.from_dict(obj["condition"]) if obj.get("condition") is not None else None, - "execution": AlertAfm.from_dict(obj["execution"]) if obj.get("execution") is not None else None, - "interval": obj.get("interval"), - "trigger": obj.get("trigger") if obj.get("trigger") is not None else 'ALWAYS' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_dashboard_tabular_exports_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_dashboard_tabular_exports_inner.py deleted file mode 100644 index e14742fbc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_dashboard_tabular_exports_inner.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dashboard_tabular_export_request_v2 import DashboardTabularExportRequestV2 -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesDashboardTabularExportsInner(BaseModel): - """ - JsonApiAutomationInAttributesDashboardTabularExportsInner - """ # noqa: E501 - request_payload: DashboardTabularExportRequestV2 = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesDashboardTabularExportsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesDashboardTabularExportsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": DashboardTabularExportRequestV2.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_external_recipients_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_external_recipients_inner.py deleted file mode 100644 index af5a91146..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_external_recipients_inner.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesExternalRecipientsInner(BaseModel): - """ - JsonApiAutomationInAttributesExternalRecipientsInner - """ # noqa: E501 - email: StrictStr = Field(description="E-mail address to send notifications from.") - __properties: ClassVar[List[str]] = ["email"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesExternalRecipientsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesExternalRecipientsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_image_exports_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_image_exports_inner.py deleted file mode 100644 index d4206337f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_image_exports_inner.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.image_export_request import ImageExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesImageExportsInner(BaseModel): - """ - JsonApiAutomationInAttributesImageExportsInner - """ # noqa: E501 - request_payload: ImageExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesImageExportsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesImageExportsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": ImageExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_metadata.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_metadata.py deleted file mode 100644 index 7795751a1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_metadata.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.visible_filter import VisibleFilter -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesMetadata(BaseModel): - """ - Additional information for the automation. - """ # noqa: E501 - visible_filters: Optional[List[VisibleFilter]] = Field(default=None, alias="visibleFilters") - widget: Optional[StrictStr] = None - additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["visibleFilters", "widget"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesMetadata from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * Fields in `self.additional_properties` are added to the output dict. - """ - excluded_fields: Set[str] = set([ - "additional_properties", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in visible_filters (list) - _items = [] - if self.visible_filters: - for _item_visible_filters in self.visible_filters: - if _item_visible_filters: - _items.append(_item_visible_filters.to_dict()) - _dict['visibleFilters'] = _items - # puts key-value pairs in additional_properties in the top level - if self.additional_properties is not None: - for _key, _value in self.additional_properties.items(): - _dict[_key] = _value - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesMetadata from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "visibleFilters": [VisibleFilter.from_dict(_item) for _item in obj["visibleFilters"]] if obj.get("visibleFilters") is not None else None, - "widget": obj.get("widget") - }) - # store additional fields in additional_properties - for _key in obj.keys(): - if _key not in cls.__properties: - _obj.additional_properties[_key] = obj.get(_key) - - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_raw_exports_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_raw_exports_inner.py deleted file mode 100644 index 66982168c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_raw_exports_inner.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.raw_export_automation_request import RawExportAutomationRequest -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesRawExportsInner(BaseModel): - """ - JsonApiAutomationInAttributesRawExportsInner - """ # noqa: E501 - request_payload: RawExportAutomationRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesRawExportsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesRawExportsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": RawExportAutomationRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_schedule.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_schedule.py deleted file mode 100644 index fc87dcd68..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_schedule.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesSchedule(BaseModel): - """ - JsonApiAutomationInAttributesSchedule - """ # noqa: E501 - cron: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Cron expression defining the schedule of the automation. The format is SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK (YEAR). The example expression signifies an action every 30 minutes from 9:00 to 17:00 on workdays.") - cron_description: Optional[StrictStr] = Field(default=None, description="Human-readable description of the cron expression.", alias="cronDescription") - first_run: Optional[datetime] = Field(default=None, description="Timestamp of the first scheduled action. If not provided default to the next scheduled time.", alias="firstRun") - timezone: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Timezone in which the schedule is defined.") - __properties: ClassVar[List[str]] = ["cron", "cronDescription", "firstRun", "timezone"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesSchedule from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "cron_description", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesSchedule from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "cron": obj.get("cron"), - "cronDescription": obj.get("cronDescription"), - "firstRun": obj.get("firstRun"), - "timezone": obj.get("timezone") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_slides_exports_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_slides_exports_inner.py deleted file mode 100644 index d66f90693..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_slides_exports_inner.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.slides_export_request import SlidesExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesSlidesExportsInner(BaseModel): - """ - JsonApiAutomationInAttributesSlidesExportsInner - """ # noqa: E501 - request_payload: SlidesExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesSlidesExportsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesSlidesExportsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": SlidesExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_tabular_exports_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_tabular_exports_inner.py deleted file mode 100644 index 29571ba3e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_tabular_exports_inner.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.tabular_export_request import TabularExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesTabularExportsInner(BaseModel): - """ - JsonApiAutomationInAttributesTabularExportsInner - """ # noqa: E501 - request_payload: TabularExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesTabularExportsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesTabularExportsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": TabularExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_visual_exports_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_visual_exports_inner.py deleted file mode 100644 index b5654836b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_attributes_visual_exports_inner.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.visual_export_request import VisualExportRequest -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInAttributesVisualExportsInner(BaseModel): - """ - JsonApiAutomationInAttributesVisualExportsInner - """ # noqa: E501 - request_payload: VisualExportRequest = Field(alias="requestPayload") - __properties: ClassVar[List[str]] = ["requestPayload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesVisualExportsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInAttributesVisualExportsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "requestPayload": VisualExportRequest.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_document.py deleted file mode 100644 index 21dd37a60..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_automation_in import JsonApiAutomationIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInDocument(BaseModel): - """ - JsonApiAutomationInDocument - """ # noqa: E501 - data: JsonApiAutomationIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAutomationIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships.py deleted file mode 100644 index eec38d842..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_automation_in_relationships_export_definitions import JsonApiAutomationInRelationshipsExportDefinitions -from gooddata_api_client.models.json_api_automation_in_relationships_notification_channel import JsonApiAutomationInRelationshipsNotificationChannel -from gooddata_api_client.models.json_api_automation_in_relationships_recipients import JsonApiAutomationInRelationshipsRecipients -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInRelationships(BaseModel): - """ - JsonApiAutomationInRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - export_definitions: Optional[JsonApiAutomationInRelationshipsExportDefinitions] = Field(default=None, alias="exportDefinitions") - notification_channel: Optional[JsonApiAutomationInRelationshipsNotificationChannel] = Field(default=None, alias="notificationChannel") - recipients: Optional[JsonApiAutomationInRelationshipsRecipients] = None - __properties: ClassVar[List[str]] = ["analyticalDashboard", "exportDefinitions", "notificationChannel", "recipients"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of export_definitions - if self.export_definitions: - _dict['exportDefinitions'] = self.export_definitions.to_dict() - # override the default output from pydantic by calling `to_dict()` of notification_channel - if self.notification_channel: - _dict['notificationChannel'] = self.notification_channel.to_dict() - # override the default output from pydantic by calling `to_dict()` of recipients - if self.recipients: - _dict['recipients'] = self.recipients.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "exportDefinitions": JsonApiAutomationInRelationshipsExportDefinitions.from_dict(obj["exportDefinitions"]) if obj.get("exportDefinitions") is not None else None, - "notificationChannel": JsonApiAutomationInRelationshipsNotificationChannel.from_dict(obj["notificationChannel"]) if obj.get("notificationChannel") is not None else None, - "recipients": JsonApiAutomationInRelationshipsRecipients.from_dict(obj["recipients"]) if obj.get("recipients") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_analytical_dashboard.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_analytical_dashboard.py deleted file mode 100644 index 790fe683a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_analytical_dashboard.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_to_one_linkage import JsonApiAnalyticalDashboardToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInRelationshipsAnalyticalDashboard(BaseModel): - """ - JsonApiAutomationInRelationshipsAnalyticalDashboard - """ # noqa: E501 - data: Optional[JsonApiAnalyticalDashboardToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsAnalyticalDashboard from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsAnalyticalDashboard from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAnalyticalDashboardToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_export_definitions.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_export_definitions.py deleted file mode 100644 index b78cc47ff..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_export_definitions.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_definition_linkage import JsonApiExportDefinitionLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInRelationshipsExportDefinitions(BaseModel): - """ - JsonApiAutomationInRelationshipsExportDefinitions - """ # noqa: E501 - data: List[JsonApiExportDefinitionLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsExportDefinitions from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsExportDefinitions from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiExportDefinitionLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_notification_channel.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_notification_channel.py deleted file mode 100644 index 9b7a0931e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_notification_channel.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_notification_channel_to_one_linkage import JsonApiNotificationChannelToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInRelationshipsNotificationChannel(BaseModel): - """ - JsonApiAutomationInRelationshipsNotificationChannel - """ # noqa: E501 - data: Optional[JsonApiNotificationChannelToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsNotificationChannel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsNotificationChannel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiNotificationChannelToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_recipients.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_recipients.py deleted file mode 100644 index 811013ddf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_in_relationships_recipients.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_linkage import JsonApiUserLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationInRelationshipsRecipients(BaseModel): - """ - JsonApiAutomationInRelationshipsRecipients - """ # noqa: E501 - data: List[JsonApiUserLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsRecipients from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationInRelationshipsRecipients from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_linkage.py deleted file mode 100644 index bdf5eb5ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out.py deleted file mode 100644 index 3d84cd6da..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_automation_out_attributes import JsonApiAutomationOutAttributes -from gooddata_api_client.models.json_api_automation_out_relationships import JsonApiAutomationOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOut(BaseModel): - """ - JSON:API representation of automation entity. - """ # noqa: E501 - attributes: Optional[JsonApiAutomationOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAutomationOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAutomationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAutomationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_attributes.py deleted file mode 100644 index cd05b5006..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_attributes.py +++ /dev/null @@ -1,255 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_in_attributes_alert import JsonApiAutomationInAttributesAlert -from gooddata_api_client.models.json_api_automation_in_attributes_dashboard_tabular_exports_inner import JsonApiAutomationInAttributesDashboardTabularExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_external_recipients_inner import JsonApiAutomationInAttributesExternalRecipientsInner -from gooddata_api_client.models.json_api_automation_in_attributes_image_exports_inner import JsonApiAutomationInAttributesImageExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_metadata import JsonApiAutomationInAttributesMetadata -from gooddata_api_client.models.json_api_automation_in_attributes_raw_exports_inner import JsonApiAutomationInAttributesRawExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_schedule import JsonApiAutomationInAttributesSchedule -from gooddata_api_client.models.json_api_automation_in_attributes_slides_exports_inner import JsonApiAutomationInAttributesSlidesExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_tabular_exports_inner import JsonApiAutomationInAttributesTabularExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_visual_exports_inner import JsonApiAutomationInAttributesVisualExportsInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOutAttributes(BaseModel): - """ - JsonApiAutomationOutAttributes - """ # noqa: E501 - alert: Optional[JsonApiAutomationInAttributesAlert] = None - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - dashboard_tabular_exports: Optional[List[JsonApiAutomationInAttributesDashboardTabularExportsInner]] = Field(default=None, alias="dashboardTabularExports") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - details: Optional[Dict[str, Any]] = Field(default=None, description="Additional details to be included in the automated message.") - evaluation_mode: Optional[StrictStr] = Field(default=None, description="Specify automation evaluation mode.", alias="evaluationMode") - external_recipients: Optional[List[JsonApiAutomationInAttributesExternalRecipientsInner]] = Field(default=None, description="External recipients of the automation action results.", alias="externalRecipients") - image_exports: Optional[List[JsonApiAutomationInAttributesImageExportsInner]] = Field(default=None, alias="imageExports") - metadata: Optional[JsonApiAutomationInAttributesMetadata] = None - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - raw_exports: Optional[List[JsonApiAutomationInAttributesRawExportsInner]] = Field(default=None, alias="rawExports") - schedule: Optional[JsonApiAutomationInAttributesSchedule] = None - slides_exports: Optional[List[JsonApiAutomationInAttributesSlidesExportsInner]] = Field(default=None, alias="slidesExports") - state: Optional[StrictStr] = Field(default=None, description="Current state of the automation.") - tabular_exports: Optional[List[JsonApiAutomationInAttributesTabularExportsInner]] = Field(default=None, alias="tabularExports") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - visual_exports: Optional[List[JsonApiAutomationInAttributesVisualExportsInner]] = Field(default=None, alias="visualExports") - __properties: ClassVar[List[str]] = ["alert", "areRelationsValid", "createdAt", "dashboardTabularExports", "description", "details", "evaluationMode", "externalRecipients", "imageExports", "metadata", "modifiedAt", "rawExports", "schedule", "slidesExports", "state", "tabularExports", "tags", "title", "visualExports"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('evaluation_mode') - def evaluation_mode_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SHARED', 'PER_RECIPIENT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SHARED', 'PER_RECIPIENT')") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('state') - def state_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ACTIVE', 'PAUSED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ACTIVE', 'PAUSED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of alert - if self.alert: - _dict['alert'] = self.alert.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_tabular_exports (list) - _items = [] - if self.dashboard_tabular_exports: - for _item_dashboard_tabular_exports in self.dashboard_tabular_exports: - if _item_dashboard_tabular_exports: - _items.append(_item_dashboard_tabular_exports.to_dict()) - _dict['dashboardTabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in external_recipients (list) - _items = [] - if self.external_recipients: - for _item_external_recipients in self.external_recipients: - if _item_external_recipients: - _items.append(_item_external_recipients.to_dict()) - _dict['externalRecipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in image_exports (list) - _items = [] - if self.image_exports: - for _item_image_exports in self.image_exports: - if _item_image_exports: - _items.append(_item_image_exports.to_dict()) - _dict['imageExports'] = _items - # override the default output from pydantic by calling `to_dict()` of metadata - if self.metadata: - _dict['metadata'] = self.metadata.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in raw_exports (list) - _items = [] - if self.raw_exports: - for _item_raw_exports in self.raw_exports: - if _item_raw_exports: - _items.append(_item_raw_exports.to_dict()) - _dict['rawExports'] = _items - # override the default output from pydantic by calling `to_dict()` of schedule - if self.schedule: - _dict['schedule'] = self.schedule.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in slides_exports (list) - _items = [] - if self.slides_exports: - for _item_slides_exports in self.slides_exports: - if _item_slides_exports: - _items.append(_item_slides_exports.to_dict()) - _dict['slidesExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tabular_exports (list) - _items = [] - if self.tabular_exports: - for _item_tabular_exports in self.tabular_exports: - if _item_tabular_exports: - _items.append(_item_tabular_exports.to_dict()) - _dict['tabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visual_exports (list) - _items = [] - if self.visual_exports: - for _item_visual_exports in self.visual_exports: - if _item_visual_exports: - _items.append(_item_visual_exports.to_dict()) - _dict['visualExports'] = _items - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alert": JsonApiAutomationInAttributesAlert.from_dict(obj["alert"]) if obj.get("alert") is not None else None, - "areRelationsValid": obj.get("areRelationsValid"), - "createdAt": obj.get("createdAt"), - "dashboardTabularExports": [JsonApiAutomationInAttributesDashboardTabularExportsInner.from_dict(_item) for _item in obj["dashboardTabularExports"]] if obj.get("dashboardTabularExports") is not None else None, - "description": obj.get("description"), - "details": obj.get("details"), - "evaluationMode": obj.get("evaluationMode"), - "externalRecipients": [JsonApiAutomationInAttributesExternalRecipientsInner.from_dict(_item) for _item in obj["externalRecipients"]] if obj.get("externalRecipients") is not None else None, - "imageExports": [JsonApiAutomationInAttributesImageExportsInner.from_dict(_item) for _item in obj["imageExports"]] if obj.get("imageExports") is not None else None, - "metadata": JsonApiAutomationInAttributesMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, - "modifiedAt": obj.get("modifiedAt"), - "rawExports": [JsonApiAutomationInAttributesRawExportsInner.from_dict(_item) for _item in obj["rawExports"]] if obj.get("rawExports") is not None else None, - "schedule": JsonApiAutomationInAttributesSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, - "slidesExports": [JsonApiAutomationInAttributesSlidesExportsInner.from_dict(_item) for _item in obj["slidesExports"]] if obj.get("slidesExports") is not None else None, - "state": obj.get("state"), - "tabularExports": [JsonApiAutomationInAttributesTabularExportsInner.from_dict(_item) for _item in obj["tabularExports"]] if obj.get("tabularExports") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "visualExports": [JsonApiAutomationInAttributesVisualExportsInner.from_dict(_item) for _item in obj["visualExports"]] if obj.get("visualExports") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_document.py deleted file mode 100644 index 4857b944c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_out import JsonApiAutomationOut -from gooddata_api_client.models.json_api_automation_out_includes import JsonApiAutomationOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOutDocument(BaseModel): - """ - JsonApiAutomationOutDocument - """ # noqa: E501 - data: JsonApiAutomationOut - included: Optional[List[JsonApiAutomationOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAutomationOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiAutomationOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_includes.py deleted file mode 100644 index bc63fb861..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_includes.py +++ /dev/null @@ -1,201 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.json_api_automation_result_out_with_links import JsonApiAutomationResultOutWithLinks -from gooddata_api_client.models.json_api_export_definition_out_with_links import JsonApiExportDefinitionOutWithLinks -from gooddata_api_client.models.json_api_notification_channel_out_with_links import JsonApiNotificationChannelOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.json_api_user_out_with_links import JsonApiUserOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIAUTOMATIONOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardOutWithLinks", "JsonApiAutomationResultOutWithLinks", "JsonApiExportDefinitionOutWithLinks", "JsonApiNotificationChannelOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiUserOutWithLinks"] - -class JsonApiAutomationOutIncludes(BaseModel): - """ - JsonApiAutomationOutIncludes - """ - # data type: JsonApiNotificationChannelOutWithLinks - oneof_schema_1_validator: Optional[JsonApiNotificationChannelOutWithLinks] = None - # data type: JsonApiAnalyticalDashboardOutWithLinks - oneof_schema_2_validator: Optional[JsonApiAnalyticalDashboardOutWithLinks] = None - # data type: JsonApiUserIdentifierOutWithLinks - oneof_schema_3_validator: Optional[JsonApiUserIdentifierOutWithLinks] = None - # data type: JsonApiExportDefinitionOutWithLinks - oneof_schema_4_validator: Optional[JsonApiExportDefinitionOutWithLinks] = None - # data type: JsonApiUserOutWithLinks - oneof_schema_5_validator: Optional[JsonApiUserOutWithLinks] = None - # data type: JsonApiAutomationResultOutWithLinks - oneof_schema_6_validator: Optional[JsonApiAutomationResultOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardOutWithLinks", "JsonApiAutomationResultOutWithLinks", "JsonApiExportDefinitionOutWithLinks", "JsonApiNotificationChannelOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiUserOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiAutomationOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiNotificationChannelOutWithLinks - if not isinstance(v, JsonApiNotificationChannelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiNotificationChannelOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAnalyticalDashboardOutWithLinks - if not isinstance(v, JsonApiAnalyticalDashboardOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserIdentifierOutWithLinks - if not isinstance(v, JsonApiUserIdentifierOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiExportDefinitionOutWithLinks - if not isinstance(v, JsonApiExportDefinitionOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiExportDefinitionOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserOutWithLinks - if not isinstance(v, JsonApiUserOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAutomationResultOutWithLinks - if not isinstance(v, JsonApiAutomationResultOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAutomationResultOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAutomationOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiNotificationChannelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiNotificationChannelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAnalyticalDashboardOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserIdentifierOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiExportDefinitionOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiExportDefinitionOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAutomationResultOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAutomationResultOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAutomationOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_list.py deleted file mode 100644 index 588c27c63..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_automation_out_includes import JsonApiAutomationOutIncludes -from gooddata_api_client.models.json_api_automation_out_with_links import JsonApiAutomationOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiAutomationOutWithLinks] - included: Optional[List[JsonApiAutomationOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAutomationOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAutomationOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships.py deleted file mode 100644 index 1f5511259..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships.py +++ /dev/null @@ -1,127 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_automation_in_relationships_export_definitions import JsonApiAutomationInRelationshipsExportDefinitions -from gooddata_api_client.models.json_api_automation_in_relationships_notification_channel import JsonApiAutomationInRelationshipsNotificationChannel -from gooddata_api_client.models.json_api_automation_in_relationships_recipients import JsonApiAutomationInRelationshipsRecipients -from gooddata_api_client.models.json_api_automation_out_relationships_automation_results import JsonApiAutomationOutRelationshipsAutomationResults -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOutRelationships(BaseModel): - """ - JsonApiAutomationOutRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - automation_results: Optional[JsonApiAutomationOutRelationshipsAutomationResults] = Field(default=None, alias="automationResults") - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - export_definitions: Optional[JsonApiAutomationInRelationshipsExportDefinitions] = Field(default=None, alias="exportDefinitions") - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - notification_channel: Optional[JsonApiAutomationInRelationshipsNotificationChannel] = Field(default=None, alias="notificationChannel") - recipients: Optional[JsonApiAutomationInRelationshipsRecipients] = None - __properties: ClassVar[List[str]] = ["analyticalDashboard", "automationResults", "createdBy", "exportDefinitions", "modifiedBy", "notificationChannel", "recipients"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of automation_results - if self.automation_results: - _dict['automationResults'] = self.automation_results.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of export_definitions - if self.export_definitions: - _dict['exportDefinitions'] = self.export_definitions.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of notification_channel - if self.notification_channel: - _dict['notificationChannel'] = self.notification_channel.to_dict() - # override the default output from pydantic by calling `to_dict()` of recipients - if self.recipients: - _dict['recipients'] = self.recipients.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "automationResults": JsonApiAutomationOutRelationshipsAutomationResults.from_dict(obj["automationResults"]) if obj.get("automationResults") is not None else None, - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "exportDefinitions": JsonApiAutomationInRelationshipsExportDefinitions.from_dict(obj["exportDefinitions"]) if obj.get("exportDefinitions") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "notificationChannel": JsonApiAutomationInRelationshipsNotificationChannel.from_dict(obj["notificationChannel"]) if obj.get("notificationChannel") is not None else None, - "recipients": JsonApiAutomationInRelationshipsRecipients.from_dict(obj["recipients"]) if obj.get("recipients") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships_automation_results.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships_automation_results.py deleted file mode 100644 index 8383487fe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_relationships_automation_results.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_automation_result_linkage import JsonApiAutomationResultLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOutRelationshipsAutomationResults(BaseModel): - """ - JsonApiAutomationOutRelationshipsAutomationResults - """ # noqa: E501 - data: List[JsonApiAutomationResultLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutRelationshipsAutomationResults from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutRelationshipsAutomationResults from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAutomationResultLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_with_links.py deleted file mode 100644 index e88fcb351..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_automation_out_attributes import JsonApiAutomationOutAttributes -from gooddata_api_client.models.json_api_automation_out_relationships import JsonApiAutomationOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationOutWithLinks(BaseModel): - """ - JsonApiAutomationOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiAutomationOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiAutomationOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAutomationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiAutomationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_patch.py deleted file mode 100644 index f718f6fe2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_in_attributes import JsonApiAutomationInAttributes -from gooddata_api_client.models.json_api_automation_in_relationships import JsonApiAutomationInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationPatch(BaseModel): - """ - JSON:API representation of patching automation entity. - """ # noqa: E501 - attributes: Optional[JsonApiAutomationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiAutomationInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAutomationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiAutomationInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_patch_document.py deleted file mode 100644 index 9ba09e4e1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_automation_patch import JsonApiAutomationPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationPatchDocument(BaseModel): - """ - JsonApiAutomationPatchDocument - """ # noqa: E501 - data: JsonApiAutomationPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAutomationPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_linkage.py deleted file mode 100644 index 1482f9a17..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automationResult']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automationResult')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out.py deleted file mode 100644 index 198125849..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_result_out_attributes import JsonApiAutomationResultOutAttributes -from gooddata_api_client.models.json_api_automation_result_out_relationships import JsonApiAutomationResultOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultOut(BaseModel): - """ - JSON:API representation of automationResult entity. - """ # noqa: E501 - attributes: JsonApiAutomationResultOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiAutomationResultOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automationResult']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automationResult')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAutomationResultOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiAutomationResultOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_attributes.py deleted file mode 100644 index 23e533e61..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_attributes.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultOutAttributes(BaseModel): - """ - JsonApiAutomationResultOutAttributes - """ # noqa: E501 - error_message: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, alias="errorMessage") - executed_at: datetime = Field(description="Timestamp of the last automation run.", alias="executedAt") - status: StrictStr = Field(description="Status of the last automation run.") - trace_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="traceId") - __properties: ClassVar[List[str]] = ["errorMessage", "executedAt", "status", "traceId"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SUCCESS', 'FAILED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUCCESS', 'FAILED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "errorMessage": obj.get("errorMessage"), - "executedAt": obj.get("executedAt"), - "status": obj.get("status"), - "traceId": obj.get("traceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_list.py deleted file mode 100644 index 29463426a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_automation_out_with_links import JsonApiAutomationOutWithLinks -from gooddata_api_client.models.json_api_automation_result_out_with_links import JsonApiAutomationResultOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiAutomationResultOutWithLinks] - included: Optional[List[JsonApiAutomationOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAutomationResultOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAutomationOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships.py deleted file mode 100644 index 1535ee80e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_result_out_relationships_automation import JsonApiAutomationResultOutRelationshipsAutomation -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultOutRelationships(BaseModel): - """ - JsonApiAutomationResultOutRelationships - """ # noqa: E501 - automation: Optional[JsonApiAutomationResultOutRelationshipsAutomation] = None - __properties: ClassVar[List[str]] = ["automation"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of automation - if self.automation: - _dict['automation'] = self.automation.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "automation": JsonApiAutomationResultOutRelationshipsAutomation.from_dict(obj["automation"]) if obj.get("automation") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships_automation.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships_automation.py deleted file mode 100644 index e3ed8d761..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_relationships_automation.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_to_one_linkage import JsonApiAutomationToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultOutRelationshipsAutomation(BaseModel): - """ - JsonApiAutomationResultOutRelationshipsAutomation - """ # noqa: E501 - data: Optional[JsonApiAutomationToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutRelationshipsAutomation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutRelationshipsAutomation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAutomationToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_with_links.py deleted file mode 100644 index d914780a2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_result_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_result_out_attributes import JsonApiAutomationResultOutAttributes -from gooddata_api_client.models.json_api_automation_result_out_relationships import JsonApiAutomationResultOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiAutomationResultOutWithLinks(BaseModel): - """ - JsonApiAutomationResultOutWithLinks - """ # noqa: E501 - attributes: JsonApiAutomationResultOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiAutomationResultOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automationResult']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automationResult')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiAutomationResultOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAutomationResultOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiAutomationResultOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_automation_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_automation_to_one_linkage.py deleted file mode 100644 index 3ae609da2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_automation_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_automation_linkage import JsonApiAutomationLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIAUTOMATIONTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiAutomationLinkage"] - -class JsonApiAutomationToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiAutomationLinkage - oneof_schema_1_validator: Optional[JsonApiAutomationLinkage] = None - actual_instance: Optional[Union[JsonApiAutomationLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiAutomationLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiAutomationToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiAutomationLinkage - if not isinstance(v, JsonApiAutomationLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAutomationLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiAutomationToOneLinkage with oneOf schemas: JsonApiAutomationLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiAutomationLinkage - try: - if match == 0: - instance.actual_instance = JsonApiAutomationLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiAutomationToOneLinkage with oneOf schemas: JsonApiAutomationLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAutomationLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in.py deleted file mode 100644 index d5a3d01ef..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_in_attributes import JsonApiColorPaletteInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteIn(BaseModel): - """ - JSON:API representation of colorPalette entity. - """ # noqa: E501 - attributes: JsonApiColorPaletteInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['colorPalette']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('colorPalette')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPaletteInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_attributes.py deleted file mode 100644 index fa7b66f96..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_attributes.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteInAttributes(BaseModel): - """ - JsonApiColorPaletteInAttributes - """ # noqa: E501 - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 15000 characters.") - name: Annotated[str, Field(strict=True, max_length=255)] - __properties: ClassVar[List[str]] = ["content", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_document.py deleted file mode 100644 index eeeaf4d13..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_color_palette_in import JsonApiColorPaletteIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteInDocument(BaseModel): - """ - JsonApiColorPaletteInDocument - """ # noqa: E501 - data: JsonApiColorPaletteIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiColorPaletteIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out.py deleted file mode 100644 index d6a57b91e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_in_attributes import JsonApiColorPaletteInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteOut(BaseModel): - """ - JSON:API representation of colorPalette entity. - """ # noqa: E501 - attributes: JsonApiColorPaletteInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['colorPalette']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('colorPalette')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPaletteInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_document.py deleted file mode 100644 index 3ad6f9502..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_color_palette_out import JsonApiColorPaletteOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteOutDocument(BaseModel): - """ - JsonApiColorPaletteOutDocument - """ # noqa: E501 - data: JsonApiColorPaletteOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiColorPaletteOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_list.py deleted file mode 100644 index ad82cdb98..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_color_palette_out_with_links import JsonApiColorPaletteOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiColorPaletteOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiColorPaletteOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_with_links.py deleted file mode 100644 index 829e020df..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_in_attributes import JsonApiColorPaletteInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPaletteOutWithLinks(BaseModel): - """ - JsonApiColorPaletteOutWithLinks - """ # noqa: E501 - attributes: JsonApiColorPaletteInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['colorPalette']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('colorPalette')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPaletteOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPaletteInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch.py deleted file mode 100644 index 71c82a88d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_patch_attributes import JsonApiColorPalettePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPalettePatch(BaseModel): - """ - JSON:API representation of patching colorPalette entity. - """ # noqa: E501 - attributes: JsonApiColorPalettePatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['colorPalette']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('colorPalette')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPalettePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPalettePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPalettePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_attributes.py deleted file mode 100644 index 072d294d5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_attributes.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPalettePatchAttributes(BaseModel): - """ - JsonApiColorPalettePatchAttributes - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 15000 characters.") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["content", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPalettePatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPalettePatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_document.py deleted file mode 100644 index 09448a903..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_color_palette_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_color_palette_patch import JsonApiColorPalettePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiColorPalettePatchDocument(BaseModel): - """ - JsonApiColorPalettePatchDocument - """ # noqa: E501 - data: JsonApiColorPalettePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiColorPalettePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiColorPalettePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiColorPalettePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in.py deleted file mode 100644 index 6acfb2985..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_cookie_security_configuration_in_attributes import JsonApiCookieSecurityConfigurationInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationIn(BaseModel): - """ - JSON:API representation of cookieSecurityConfiguration entity. - """ # noqa: E501 - attributes: Optional[JsonApiCookieSecurityConfigurationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cookieSecurityConfiguration']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cookieSecurityConfiguration')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCookieSecurityConfigurationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_attributes.py deleted file mode 100644 index 3b410659d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_attributes.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationInAttributes(BaseModel): - """ - JsonApiCookieSecurityConfigurationInAttributes - """ # noqa: E501 - last_rotation: Optional[datetime] = Field(default=None, alias="lastRotation") - rotation_interval: Optional[StrictStr] = Field(default=None, description="Length of interval between automatic rotations expressed in format of ISO 8601 duration", alias="rotationInterval") - __properties: ClassVar[List[str]] = ["lastRotation", "rotationInterval"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "lastRotation": obj.get("lastRotation"), - "rotationInterval": obj.get("rotationInterval") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_document.py deleted file mode 100644 index dd60793ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_cookie_security_configuration_in import JsonApiCookieSecurityConfigurationIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationInDocument(BaseModel): - """ - JsonApiCookieSecurityConfigurationInDocument - """ # noqa: E501 - data: JsonApiCookieSecurityConfigurationIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCookieSecurityConfigurationIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out.py deleted file mode 100644 index 7056d4598..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_cookie_security_configuration_in_attributes import JsonApiCookieSecurityConfigurationInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationOut(BaseModel): - """ - JSON:API representation of cookieSecurityConfiguration entity. - """ # noqa: E501 - attributes: Optional[JsonApiCookieSecurityConfigurationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cookieSecurityConfiguration']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cookieSecurityConfiguration')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCookieSecurityConfigurationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out_document.py deleted file mode 100644 index ff43c696c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_cookie_security_configuration_out import JsonApiCookieSecurityConfigurationOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationOutDocument(BaseModel): - """ - JsonApiCookieSecurityConfigurationOutDocument - """ # noqa: E501 - data: JsonApiCookieSecurityConfigurationOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCookieSecurityConfigurationOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch.py deleted file mode 100644 index ca1755f49..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_cookie_security_configuration_in_attributes import JsonApiCookieSecurityConfigurationInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationPatch(BaseModel): - """ - JSON:API representation of patching cookieSecurityConfiguration entity. - """ # noqa: E501 - attributes: Optional[JsonApiCookieSecurityConfigurationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cookieSecurityConfiguration']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cookieSecurityConfiguration')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCookieSecurityConfigurationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch_document.py deleted file mode 100644 index 65505eaf6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_cookie_security_configuration_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_cookie_security_configuration_patch import JsonApiCookieSecurityConfigurationPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCookieSecurityConfigurationPatchDocument(BaseModel): - """ - JsonApiCookieSecurityConfigurationPatchDocument - """ # noqa: E501 - data: JsonApiCookieSecurityConfigurationPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCookieSecurityConfigurationPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCookieSecurityConfigurationPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in.py deleted file mode 100644 index 66fe64ac4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_csp_directive_in_attributes import JsonApiCspDirectiveInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveIn(BaseModel): - """ - JSON:API representation of cspDirective entity. - """ # noqa: E501 - attributes: JsonApiCspDirectiveInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cspDirective']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cspDirective')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCspDirectiveInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_attributes.py deleted file mode 100644 index 452b324fb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_attributes.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveInAttributes(BaseModel): - """ - JsonApiCspDirectiveInAttributes - """ # noqa: E501 - sources: List[StrictStr] - __properties: ClassVar[List[str]] = ["sources"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sources": obj.get("sources") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_document.py deleted file mode 100644 index 4cbaf9e2f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_csp_directive_in import JsonApiCspDirectiveIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveInDocument(BaseModel): - """ - JsonApiCspDirectiveInDocument - """ # noqa: E501 - data: JsonApiCspDirectiveIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCspDirectiveIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out.py deleted file mode 100644 index ddd2aa210..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_csp_directive_in_attributes import JsonApiCspDirectiveInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveOut(BaseModel): - """ - JSON:API representation of cspDirective entity. - """ # noqa: E501 - attributes: JsonApiCspDirectiveInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cspDirective']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cspDirective')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCspDirectiveInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_document.py deleted file mode 100644 index bb4539062..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_csp_directive_out import JsonApiCspDirectiveOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveOutDocument(BaseModel): - """ - JsonApiCspDirectiveOutDocument - """ # noqa: E501 - data: JsonApiCspDirectiveOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCspDirectiveOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_list.py deleted file mode 100644 index 0f7735af7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_csp_directive_out_with_links import JsonApiCspDirectiveOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiCspDirectiveOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiCspDirectiveOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_with_links.py deleted file mode 100644 index f0c864266..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_csp_directive_in_attributes import JsonApiCspDirectiveInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectiveOutWithLinks(BaseModel): - """ - JsonApiCspDirectiveOutWithLinks - """ # noqa: E501 - attributes: JsonApiCspDirectiveInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cspDirective']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cspDirective')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectiveOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCspDirectiveInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch.py deleted file mode 100644 index 89d21f635..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_csp_directive_patch_attributes import JsonApiCspDirectivePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectivePatch(BaseModel): - """ - JSON:API representation of patching cspDirective entity. - """ # noqa: E501 - attributes: JsonApiCspDirectivePatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['cspDirective']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('cspDirective')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectivePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectivePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCspDirectivePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_attributes.py deleted file mode 100644 index 41a2ffd61..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_attributes.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectivePatchAttributes(BaseModel): - """ - JsonApiCspDirectivePatchAttributes - """ # noqa: E501 - sources: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["sources"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectivePatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectivePatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sources": obj.get("sources") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_document.py deleted file mode 100644 index 1628d1e6c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_csp_directive_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_csp_directive_patch import JsonApiCspDirectivePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCspDirectivePatchDocument(BaseModel): - """ - JsonApiCspDirectivePatchDocument - """ # noqa: E501 - data: JsonApiCspDirectivePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCspDirectivePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCspDirectivePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCspDirectivePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in.py deleted file mode 100644 index 4b201be6c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_application_setting_in_attributes import JsonApiCustomApplicationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingIn(BaseModel): - """ - JSON:API representation of customApplicationSetting entity. - """ # noqa: E501 - attributes: JsonApiCustomApplicationSettingInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customApplicationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customApplicationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomApplicationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_attributes.py deleted file mode 100644 index 009549521..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_attributes.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingInAttributes(BaseModel): - """ - JsonApiCustomApplicationSettingInAttributes - """ # noqa: E501 - application_name: Annotated[str, Field(strict=True, max_length=255)] = Field(alias="applicationName") - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - __properties: ClassVar[List[str]] = ["applicationName", "content"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applicationName": obj.get("applicationName"), - "content": obj.get("content") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_document.py deleted file mode 100644 index eaa452c32..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_custom_application_setting_in import JsonApiCustomApplicationSettingIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingInDocument(BaseModel): - """ - JsonApiCustomApplicationSettingInDocument - """ # noqa: E501 - data: JsonApiCustomApplicationSettingIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomApplicationSettingIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out.py deleted file mode 100644 index 60d22b9b0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_custom_application_setting_in_attributes import JsonApiCustomApplicationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingOut(BaseModel): - """ - JSON:API representation of customApplicationSetting entity. - """ # noqa: E501 - attributes: JsonApiCustomApplicationSettingInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customApplicationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customApplicationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomApplicationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_document.py deleted file mode 100644 index bd0f21358..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_custom_application_setting_out import JsonApiCustomApplicationSettingOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingOutDocument(BaseModel): - """ - JsonApiCustomApplicationSettingOutDocument - """ # noqa: E501 - data: JsonApiCustomApplicationSettingOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomApplicationSettingOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_list.py deleted file mode 100644 index a68ba29bc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_custom_application_setting_out_with_links import JsonApiCustomApplicationSettingOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiCustomApplicationSettingOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiCustomApplicationSettingOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_with_links.py deleted file mode 100644 index f9f141fd8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_custom_application_setting_in_attributes import JsonApiCustomApplicationSettingInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingOutWithLinks(BaseModel): - """ - JsonApiCustomApplicationSettingOutWithLinks - """ # noqa: E501 - attributes: JsonApiCustomApplicationSettingInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customApplicationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customApplicationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomApplicationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch.py deleted file mode 100644 index ed7515079..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_application_setting_patch_attributes import JsonApiCustomApplicationSettingPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingPatch(BaseModel): - """ - JSON:API representation of patching customApplicationSetting entity. - """ # noqa: E501 - attributes: JsonApiCustomApplicationSettingPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customApplicationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customApplicationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomApplicationSettingPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_attributes.py deleted file mode 100644 index 74e279b34..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_attributes.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingPatchAttributes(BaseModel): - """ - JsonApiCustomApplicationSettingPatchAttributes - """ # noqa: E501 - application_name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="applicationName") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 250000 characters.") - __properties: ClassVar[List[str]] = ["applicationName", "content"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applicationName": obj.get("applicationName"), - "content": obj.get("content") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_document.py deleted file mode 100644 index 4700c853f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_custom_application_setting_patch import JsonApiCustomApplicationSettingPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingPatchDocument(BaseModel): - """ - JsonApiCustomApplicationSettingPatchDocument - """ # noqa: E501 - data: JsonApiCustomApplicationSettingPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomApplicationSettingPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id.py deleted file mode 100644 index 296ea54f7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_application_setting_in_attributes import JsonApiCustomApplicationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingPostOptionalId(BaseModel): - """ - JSON:API representation of customApplicationSetting entity. - """ # noqa: E501 - attributes: JsonApiCustomApplicationSettingInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customApplicationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customApplicationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomApplicationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id_document.py deleted file mode 100644 index a2f5688ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_application_setting_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_custom_application_setting_post_optional_id import JsonApiCustomApplicationSettingPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomApplicationSettingPostOptionalIdDocument(BaseModel): - """ - JsonApiCustomApplicationSettingPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiCustomApplicationSettingPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomApplicationSettingPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomApplicationSettingPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in.py deleted file mode 100644 index 4c873b0fe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_geo_collection_in_attributes import JsonApiCustomGeoCollectionInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionIn(BaseModel): - """ - JSON:API representation of customGeoCollection entity. - """ # noqa: E501 - attributes: Optional[JsonApiCustomGeoCollectionInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customGeoCollection']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customGeoCollection')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomGeoCollectionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_attributes.py deleted file mode 100644 index 53576c5fb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_attributes.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionInAttributes(BaseModel): - """ - JsonApiCustomGeoCollectionInAttributes - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["description", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_document.py deleted file mode 100644 index 9fc793701..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_custom_geo_collection_in import JsonApiCustomGeoCollectionIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionInDocument(BaseModel): - """ - JsonApiCustomGeoCollectionInDocument - """ # noqa: E501 - data: JsonApiCustomGeoCollectionIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomGeoCollectionIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out.py deleted file mode 100644 index e589caffb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_geo_collection_in_attributes import JsonApiCustomGeoCollectionInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionOut(BaseModel): - """ - JSON:API representation of customGeoCollection entity. - """ # noqa: E501 - attributes: Optional[JsonApiCustomGeoCollectionInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customGeoCollection']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customGeoCollection')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomGeoCollectionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_document.py deleted file mode 100644 index 53b1272f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_custom_geo_collection_out import JsonApiCustomGeoCollectionOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionOutDocument(BaseModel): - """ - JsonApiCustomGeoCollectionOutDocument - """ # noqa: E501 - data: JsonApiCustomGeoCollectionOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomGeoCollectionOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_list.py deleted file mode 100644 index 99c973fa7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_custom_geo_collection_out_with_links import JsonApiCustomGeoCollectionOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiCustomGeoCollectionOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiCustomGeoCollectionOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_with_links.py deleted file mode 100644 index 9313572a0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_geo_collection_in_attributes import JsonApiCustomGeoCollectionInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionOutWithLinks(BaseModel): - """ - JsonApiCustomGeoCollectionOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiCustomGeoCollectionInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customGeoCollection']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customGeoCollection')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomGeoCollectionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch.py deleted file mode 100644 index 2d635e318..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_custom_geo_collection_in_attributes import JsonApiCustomGeoCollectionInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionPatch(BaseModel): - """ - JSON:API representation of patching customGeoCollection entity. - """ # noqa: E501 - attributes: Optional[JsonApiCustomGeoCollectionInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['customGeoCollection']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('customGeoCollection')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiCustomGeoCollectionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch_document.py deleted file mode 100644 index b06d067b9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_custom_geo_collection_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_custom_geo_collection_patch import JsonApiCustomGeoCollectionPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiCustomGeoCollectionPatchDocument(BaseModel): - """ - JsonApiCustomGeoCollectionPatchDocument - """ # noqa: E501 - data: JsonApiCustomGeoCollectionPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiCustomGeoCollectionPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiCustomGeoCollectionPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in.py deleted file mode 100644 index e60f8cb29..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_dashboard_plugin_in_attributes import JsonApiDashboardPluginInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginIn(BaseModel): - """ - JSON:API representation of dashboardPlugin entity. - """ # noqa: E501 - attributes: Optional[JsonApiDashboardPluginInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dashboardPlugin']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dashboardPlugin')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDashboardPluginInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_attributes.py deleted file mode 100644 index be01a93dc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_attributes.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginInAttributes(BaseModel): - """ - JsonApiDashboardPluginInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_document.py deleted file mode 100644 index b2cae9d98..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_dashboard_plugin_in import JsonApiDashboardPluginIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginInDocument(BaseModel): - """ - JsonApiDashboardPluginInDocument - """ # noqa: E501 - data: JsonApiDashboardPluginIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDashboardPluginIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_linkage.py deleted file mode 100644 index 7dd299b26..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dashboardPlugin']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dashboardPlugin')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out.py deleted file mode 100644 index 02003582b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_dashboard_plugin_out_attributes import JsonApiDashboardPluginOutAttributes -from gooddata_api_client.models.json_api_dashboard_plugin_out_relationships import JsonApiDashboardPluginOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginOut(BaseModel): - """ - JSON:API representation of dashboardPlugin entity. - """ # noqa: E501 - attributes: Optional[JsonApiDashboardPluginOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiDashboardPluginOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dashboardPlugin']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dashboardPlugin')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDashboardPluginOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiDashboardPluginOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_attributes.py deleted file mode 100644 index c6c497023..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_attributes.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginOutAttributes(BaseModel): - """ - JsonApiDashboardPluginOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 250000 characters.") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "createdAt", "description", "modifiedAt", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "modifiedAt": obj.get("modifiedAt"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_document.py deleted file mode 100644 index a774cffdd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_dashboard_plugin_out import JsonApiDashboardPluginOut -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginOutDocument(BaseModel): - """ - JsonApiDashboardPluginOutDocument - """ # noqa: E501 - data: JsonApiDashboardPluginOut - included: Optional[List[JsonApiUserIdentifierOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDashboardPluginOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiUserIdentifierOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_list.py deleted file mode 100644 index d106eecf4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_dashboard_plugin_out_with_links import JsonApiDashboardPluginOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiDashboardPluginOutWithLinks] - included: Optional[List[JsonApiUserIdentifierOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiDashboardPluginOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiUserIdentifierOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_relationships.py deleted file mode 100644 index cbaf6f0b5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_relationships.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginOutRelationships(BaseModel): - """ - JsonApiDashboardPluginOutRelationships - """ # noqa: E501 - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - __properties: ClassVar[List[str]] = ["createdBy", "modifiedBy"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_with_links.py deleted file mode 100644 index 0264145ac..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_dashboard_plugin_out_attributes import JsonApiDashboardPluginOutAttributes -from gooddata_api_client.models.json_api_dashboard_plugin_out_relationships import JsonApiDashboardPluginOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginOutWithLinks(BaseModel): - """ - JsonApiDashboardPluginOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiDashboardPluginOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiDashboardPluginOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dashboardPlugin']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dashboardPlugin')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDashboardPluginOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiDashboardPluginOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch.py deleted file mode 100644 index 9f26ecba6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_dashboard_plugin_in_attributes import JsonApiDashboardPluginInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginPatch(BaseModel): - """ - JSON:API representation of patching dashboardPlugin entity. - """ # noqa: E501 - attributes: Optional[JsonApiDashboardPluginInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dashboardPlugin']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dashboardPlugin')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDashboardPluginInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch_document.py deleted file mode 100644 index 896a184b7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_dashboard_plugin_patch import JsonApiDashboardPluginPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginPatchDocument(BaseModel): - """ - JsonApiDashboardPluginPatchDocument - """ # noqa: E501 - data: JsonApiDashboardPluginPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDashboardPluginPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id.py deleted file mode 100644 index a344265e4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_dashboard_plugin_in_attributes import JsonApiDashboardPluginInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginPostOptionalId(BaseModel): - """ - JSON:API representation of dashboardPlugin entity. - """ # noqa: E501 - attributes: Optional[JsonApiDashboardPluginInAttributes] = None - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dashboardPlugin']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dashboardPlugin')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDashboardPluginInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id_document.py deleted file mode 100644 index ad18721cf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dashboard_plugin_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_dashboard_plugin_post_optional_id import JsonApiDashboardPluginPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDashboardPluginPostOptionalIdDocument(BaseModel): - """ - JsonApiDashboardPluginPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiDashboardPluginPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDashboardPluginPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDashboardPluginPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out.py deleted file mode 100644 index d3497bb27..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_identifier_out_attributes import JsonApiDataSourceIdentifierOutAttributes -from gooddata_api_client.models.json_api_data_source_identifier_out_meta import JsonApiDataSourceIdentifierOutMeta -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIdentifierOut(BaseModel): - """ - JSON:API representation of dataSourceIdentifier entity. - """ # noqa: E501 - attributes: JsonApiDataSourceIdentifierOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiDataSourceIdentifierOutMeta] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSourceIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSourceIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDataSourceIdentifierOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiDataSourceIdentifierOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_attributes.py deleted file mode 100644 index 1de9bca59..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_attributes.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIdentifierOutAttributes(BaseModel): - """ - JsonApiDataSourceIdentifierOutAttributes - """ # noqa: E501 - name: Annotated[str, Field(strict=True, max_length=255)] - var_schema: Annotated[str, Field(strict=True, max_length=255)] = Field(alias="schema") - type: StrictStr - __properties: ClassVar[List[str]] = ["name", "schema", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "schema": obj.get("schema"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_document.py deleted file mode 100644 index 29991b064..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_data_source_identifier_out import JsonApiDataSourceIdentifierOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIdentifierOutDocument(BaseModel): - """ - JsonApiDataSourceIdentifierOutDocument - """ # noqa: E501 - data: JsonApiDataSourceIdentifierOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDataSourceIdentifierOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_list.py deleted file mode 100644 index a83719a4f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_data_source_identifier_out_with_links import JsonApiDataSourceIdentifierOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIdentifierOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiDataSourceIdentifierOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiDataSourceIdentifierOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_meta.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_meta.py deleted file mode 100644 index afd74565e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_meta.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIdentifierOutMeta(BaseModel): - """ - JsonApiDataSourceIdentifierOutMeta - """ # noqa: E501 - permissions: Optional[List[StrictStr]] = Field(default=None, description="List of valid permissions for a logged-in user.") - __properties: ClassVar[List[str]] = ["permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['MANAGE', 'USE']): - raise ValueError("each list item must be one of ('MANAGE', 'USE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_with_links.py deleted file mode 100644 index 4eb1b7ee1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_identifier_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_identifier_out_attributes import JsonApiDataSourceIdentifierOutAttributes -from gooddata_api_client.models.json_api_data_source_identifier_out_meta import JsonApiDataSourceIdentifierOutMeta -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIdentifierOutWithLinks(BaseModel): - """ - JsonApiDataSourceIdentifierOutWithLinks - """ # noqa: E501 - attributes: JsonApiDataSourceIdentifierOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiDataSourceIdentifierOutMeta] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSourceIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSourceIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIdentifierOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDataSourceIdentifierOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiDataSourceIdentifierOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in.py deleted file mode 100644 index df90429ad..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_in_attributes import JsonApiDataSourceInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceIn(BaseModel): - """ - JSON:API representation of dataSource entity. - """ # noqa: E501 - attributes: JsonApiDataSourceInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSource']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSource')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDataSourceInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes.py deleted file mode 100644 index 2c7b7ea33..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes.py +++ /dev/null @@ -1,207 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_in_attributes_parameters_inner import JsonApiDataSourceInAttributesParametersInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceInAttributes(BaseModel): - """ - JsonApiDataSourceInAttributes - """ # noqa: E501 - alternative_data_source_id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", alias="alternativeDataSourceId") - cache_strategy: Optional[StrictStr] = Field(default=None, description="Determines how the results coming from a particular datasource should be cached.", alias="cacheStrategy") - client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", alias="clientId") - client_secret: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The client secret to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", alias="clientSecret") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="User-facing name of the data source.") - parameters: Optional[List[JsonApiDataSourceInAttributesParametersInner]] = Field(default=None, description="Additional parameters to be used when connecting to the database providing the data for the data source.") - password: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The password to use to connect to the database providing the data for the data source.") - private_key: Optional[Annotated[str, Field(strict=True, max_length=15000)]] = Field(default=None, description="The private key to use to connect to the database providing the data for the data source.", alias="privateKey") - private_key_passphrase: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The passphrase used to encrypt the private key.", alias="privateKeyPassphrase") - var_schema: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The schema to use as the root of the data for the data source.", alias="schema") - token: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="The token to use to connect to the database providing the data for the data source (for example a BigQuery Service Account).") - type: StrictStr = Field(description="Type of the database providing the data for the data source.") - url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The URL of the database providing the data for the data source.") - username: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The username to use to connect to the database providing the data for the data source.") - __properties: ClassVar[List[str]] = ["alternativeDataSourceId", "cacheStrategy", "clientId", "clientSecret", "name", "parameters", "password", "privateKey", "privateKeyPassphrase", "schema", "token", "type", "url", "username"] - - @field_validator('alternative_data_source_id') - def alternative_data_source_id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('cache_strategy') - def cache_strategy_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'NEVER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'NEVER')") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) - _items = [] - if self.parameters: - for _item_parameters in self.parameters: - if _item_parameters: - _items.append(_item_parameters.to_dict()) - _dict['parameters'] = _items - # set to None if alternative_data_source_id (nullable) is None - # and model_fields_set contains the field - if self.alternative_data_source_id is None and "alternative_data_source_id" in self.model_fields_set: - _dict['alternativeDataSourceId'] = None - - # set to None if cache_strategy (nullable) is None - # and model_fields_set contains the field - if self.cache_strategy is None and "cache_strategy" in self.model_fields_set: - _dict['cacheStrategy'] = None - - # set to None if client_id (nullable) is None - # and model_fields_set contains the field - if self.client_id is None and "client_id" in self.model_fields_set: - _dict['clientId'] = None - - # set to None if client_secret (nullable) is None - # and model_fields_set contains the field - if self.client_secret is None and "client_secret" in self.model_fields_set: - _dict['clientSecret'] = None - - # set to None if parameters (nullable) is None - # and model_fields_set contains the field - if self.parameters is None and "parameters" in self.model_fields_set: - _dict['parameters'] = None - - # set to None if password (nullable) is None - # and model_fields_set contains the field - if self.password is None and "password" in self.model_fields_set: - _dict['password'] = None - - # set to None if private_key (nullable) is None - # and model_fields_set contains the field - if self.private_key is None and "private_key" in self.model_fields_set: - _dict['privateKey'] = None - - # set to None if private_key_passphrase (nullable) is None - # and model_fields_set contains the field - if self.private_key_passphrase is None and "private_key_passphrase" in self.model_fields_set: - _dict['privateKeyPassphrase'] = None - - # set to None if token (nullable) is None - # and model_fields_set contains the field - if self.token is None and "token" in self.model_fields_set: - _dict['token'] = None - - # set to None if url (nullable) is None - # and model_fields_set contains the field - if self.url is None and "url" in self.model_fields_set: - _dict['url'] = None - - # set to None if username (nullable) is None - # and model_fields_set contains the field - if self.username is None and "username" in self.model_fields_set: - _dict['username'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alternativeDataSourceId": obj.get("alternativeDataSourceId"), - "cacheStrategy": obj.get("cacheStrategy"), - "clientId": obj.get("clientId"), - "clientSecret": obj.get("clientSecret"), - "name": obj.get("name"), - "parameters": [JsonApiDataSourceInAttributesParametersInner.from_dict(_item) for _item in obj["parameters"]] if obj.get("parameters") is not None else None, - "password": obj.get("password"), - "privateKey": obj.get("privateKey"), - "privateKeyPassphrase": obj.get("privateKeyPassphrase"), - "schema": obj.get("schema"), - "token": obj.get("token"), - "type": obj.get("type"), - "url": obj.get("url"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes_parameters_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes_parameters_inner.py deleted file mode 100644 index d0bd7f856..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_attributes_parameters_inner.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceInAttributesParametersInner(BaseModel): - """ - JsonApiDataSourceInAttributesParametersInner - """ # noqa: E501 - name: StrictStr - value: StrictStr - __properties: ClassVar[List[str]] = ["name", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceInAttributesParametersInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceInAttributesParametersInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_document.py deleted file mode 100644 index 54341a0da..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_data_source_in import JsonApiDataSourceIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceInDocument(BaseModel): - """ - JsonApiDataSourceInDocument - """ # noqa: E501 - data: JsonApiDataSourceIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDataSourceIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out.py deleted file mode 100644 index 06b2fe064..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_identifier_out_meta import JsonApiDataSourceIdentifierOutMeta -from gooddata_api_client.models.json_api_data_source_out_attributes import JsonApiDataSourceOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceOut(BaseModel): - """ - JSON:API representation of dataSource entity. - """ # noqa: E501 - attributes: JsonApiDataSourceOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiDataSourceIdentifierOutMeta] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSource']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSource')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDataSourceOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiDataSourceIdentifierOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_attributes.py deleted file mode 100644 index ba592059b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_attributes.py +++ /dev/null @@ -1,204 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_in_attributes_parameters_inner import JsonApiDataSourceInAttributesParametersInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceOutAttributes(BaseModel): - """ - JsonApiDataSourceOutAttributes - """ # noqa: E501 - alternative_data_source_id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", alias="alternativeDataSourceId") - authentication_type: Optional[StrictStr] = Field(default=None, description="Type of authentication used to connect to the database.", alias="authenticationType") - cache_strategy: Optional[StrictStr] = Field(default=None, description="Determines how the results coming from a particular datasource should be cached.", alias="cacheStrategy") - client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", alias="clientId") - decoded_parameters: Optional[List[JsonApiDataSourceInAttributesParametersInner]] = Field(default=None, description="Decoded parameters to be used when connecting to the database providing the data for the data source.", alias="decodedParameters") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="User-facing name of the data source.") - parameters: Optional[List[JsonApiDataSourceInAttributesParametersInner]] = Field(default=None, description="Additional parameters to be used when connecting to the database providing the data for the data source.") - var_schema: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The schema to use as the root of the data for the data source.", alias="schema") - type: StrictStr = Field(description="Type of the database providing the data for the data source.") - url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The URL of the database providing the data for the data source.") - username: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The username to use to connect to the database providing the data for the data source.") - __properties: ClassVar[List[str]] = ["alternativeDataSourceId", "authenticationType", "cacheStrategy", "clientId", "decodedParameters", "name", "parameters", "schema", "type", "url", "username"] - - @field_validator('alternative_data_source_id') - def alternative_data_source_id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('authentication_type') - def authentication_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['USERNAME_PASSWORD', 'TOKEN', 'KEY_PAIR', 'CLIENT_SECRET', 'ACCESS_TOKEN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('USERNAME_PASSWORD', 'TOKEN', 'KEY_PAIR', 'CLIENT_SECRET', 'ACCESS_TOKEN')") - return value - - @field_validator('cache_strategy') - def cache_strategy_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'NEVER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'NEVER')") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in decoded_parameters (list) - _items = [] - if self.decoded_parameters: - for _item_decoded_parameters in self.decoded_parameters: - if _item_decoded_parameters: - _items.append(_item_decoded_parameters.to_dict()) - _dict['decodedParameters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) - _items = [] - if self.parameters: - for _item_parameters in self.parameters: - if _item_parameters: - _items.append(_item_parameters.to_dict()) - _dict['parameters'] = _items - # set to None if alternative_data_source_id (nullable) is None - # and model_fields_set contains the field - if self.alternative_data_source_id is None and "alternative_data_source_id" in self.model_fields_set: - _dict['alternativeDataSourceId'] = None - - # set to None if authentication_type (nullable) is None - # and model_fields_set contains the field - if self.authentication_type is None and "authentication_type" in self.model_fields_set: - _dict['authenticationType'] = None - - # set to None if cache_strategy (nullable) is None - # and model_fields_set contains the field - if self.cache_strategy is None and "cache_strategy" in self.model_fields_set: - _dict['cacheStrategy'] = None - - # set to None if client_id (nullable) is None - # and model_fields_set contains the field - if self.client_id is None and "client_id" in self.model_fields_set: - _dict['clientId'] = None - - # set to None if decoded_parameters (nullable) is None - # and model_fields_set contains the field - if self.decoded_parameters is None and "decoded_parameters" in self.model_fields_set: - _dict['decodedParameters'] = None - - # set to None if parameters (nullable) is None - # and model_fields_set contains the field - if self.parameters is None and "parameters" in self.model_fields_set: - _dict['parameters'] = None - - # set to None if url (nullable) is None - # and model_fields_set contains the field - if self.url is None and "url" in self.model_fields_set: - _dict['url'] = None - - # set to None if username (nullable) is None - # and model_fields_set contains the field - if self.username is None and "username" in self.model_fields_set: - _dict['username'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alternativeDataSourceId": obj.get("alternativeDataSourceId"), - "authenticationType": obj.get("authenticationType"), - "cacheStrategy": obj.get("cacheStrategy"), - "clientId": obj.get("clientId"), - "decodedParameters": [JsonApiDataSourceInAttributesParametersInner.from_dict(_item) for _item in obj["decodedParameters"]] if obj.get("decodedParameters") is not None else None, - "name": obj.get("name"), - "parameters": [JsonApiDataSourceInAttributesParametersInner.from_dict(_item) for _item in obj["parameters"]] if obj.get("parameters") is not None else None, - "schema": obj.get("schema"), - "type": obj.get("type"), - "url": obj.get("url"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_document.py deleted file mode 100644 index 8f3888f55..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_data_source_out import JsonApiDataSourceOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceOutDocument(BaseModel): - """ - JsonApiDataSourceOutDocument - """ # noqa: E501 - data: JsonApiDataSourceOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDataSourceOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_list.py deleted file mode 100644 index facf8b513..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_data_source_out_with_links import JsonApiDataSourceOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiDataSourceOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiDataSourceOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_with_links.py deleted file mode 100644 index 467972173..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_identifier_out_meta import JsonApiDataSourceIdentifierOutMeta -from gooddata_api_client.models.json_api_data_source_out_attributes import JsonApiDataSourceOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourceOutWithLinks(BaseModel): - """ - JsonApiDataSourceOutWithLinks - """ # noqa: E501 - attributes: JsonApiDataSourceOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiDataSourceIdentifierOutMeta] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSource']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSource')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourceOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDataSourceOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiDataSourceIdentifierOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch.py deleted file mode 100644 index 7a988effc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_patch_attributes import JsonApiDataSourcePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourcePatch(BaseModel): - """ - JSON:API representation of patching dataSource entity. - """ # noqa: E501 - attributes: JsonApiDataSourcePatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataSource']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataSource')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourcePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourcePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDataSourcePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_attributes.py deleted file mode 100644 index dbc44bc6f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_attributes.py +++ /dev/null @@ -1,210 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_data_source_in_attributes_parameters_inner import JsonApiDataSourceInAttributesParametersInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourcePatchAttributes(BaseModel): - """ - JsonApiDataSourcePatchAttributes - """ # noqa: E501 - alternative_data_source_id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="Alternative data source ID. It is a weak reference meaning data source does not have to exist. All the entities (e.g. tables) from the data source must be available also in the alternative data source. It must be present in the same organization as the data source.", alias="alternativeDataSourceId") - cache_strategy: Optional[StrictStr] = Field(default=None, description="Determines how the results coming from a particular datasource should be cached.", alias="cacheStrategy") - client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The client id to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", alias="clientId") - client_secret: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The client secret to use to connect to the database providing the data for the data source (for example a Databricks Service Account).", alias="clientSecret") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User-facing name of the data source.") - parameters: Optional[List[JsonApiDataSourceInAttributesParametersInner]] = Field(default=None, description="Additional parameters to be used when connecting to the database providing the data for the data source.") - password: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The password to use to connect to the database providing the data for the data source.") - private_key: Optional[Annotated[str, Field(strict=True, max_length=15000)]] = Field(default=None, description="The private key to use to connect to the database providing the data for the data source.", alias="privateKey") - private_key_passphrase: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The passphrase used to encrypt the private key.", alias="privateKeyPassphrase") - var_schema: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The schema to use as the root of the data for the data source.", alias="schema") - token: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="The token to use to connect to the database providing the data for the data source (for example a BigQuery Service Account).") - type: Optional[StrictStr] = Field(default=None, description="Type of the database providing the data for the data source.") - url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The URL of the database providing the data for the data source.") - username: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The username to use to connect to the database providing the data for the data source.") - __properties: ClassVar[List[str]] = ["alternativeDataSourceId", "cacheStrategy", "clientId", "clientSecret", "name", "parameters", "password", "privateKey", "privateKeyPassphrase", "schema", "token", "type", "url", "username"] - - @field_validator('alternative_data_source_id') - def alternative_data_source_id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('cache_strategy') - def cache_strategy_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'NEVER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'NEVER')") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourcePatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) - _items = [] - if self.parameters: - for _item_parameters in self.parameters: - if _item_parameters: - _items.append(_item_parameters.to_dict()) - _dict['parameters'] = _items - # set to None if alternative_data_source_id (nullable) is None - # and model_fields_set contains the field - if self.alternative_data_source_id is None and "alternative_data_source_id" in self.model_fields_set: - _dict['alternativeDataSourceId'] = None - - # set to None if cache_strategy (nullable) is None - # and model_fields_set contains the field - if self.cache_strategy is None and "cache_strategy" in self.model_fields_set: - _dict['cacheStrategy'] = None - - # set to None if client_id (nullable) is None - # and model_fields_set contains the field - if self.client_id is None and "client_id" in self.model_fields_set: - _dict['clientId'] = None - - # set to None if client_secret (nullable) is None - # and model_fields_set contains the field - if self.client_secret is None and "client_secret" in self.model_fields_set: - _dict['clientSecret'] = None - - # set to None if parameters (nullable) is None - # and model_fields_set contains the field - if self.parameters is None and "parameters" in self.model_fields_set: - _dict['parameters'] = None - - # set to None if password (nullable) is None - # and model_fields_set contains the field - if self.password is None and "password" in self.model_fields_set: - _dict['password'] = None - - # set to None if private_key (nullable) is None - # and model_fields_set contains the field - if self.private_key is None and "private_key" in self.model_fields_set: - _dict['privateKey'] = None - - # set to None if private_key_passphrase (nullable) is None - # and model_fields_set contains the field - if self.private_key_passphrase is None and "private_key_passphrase" in self.model_fields_set: - _dict['privateKeyPassphrase'] = None - - # set to None if token (nullable) is None - # and model_fields_set contains the field - if self.token is None and "token" in self.model_fields_set: - _dict['token'] = None - - # set to None if url (nullable) is None - # and model_fields_set contains the field - if self.url is None and "url" in self.model_fields_set: - _dict['url'] = None - - # set to None if username (nullable) is None - # and model_fields_set contains the field - if self.username is None and "username" in self.model_fields_set: - _dict['username'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourcePatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alternativeDataSourceId": obj.get("alternativeDataSourceId"), - "cacheStrategy": obj.get("cacheStrategy"), - "clientId": obj.get("clientId"), - "clientSecret": obj.get("clientSecret"), - "name": obj.get("name"), - "parameters": [JsonApiDataSourceInAttributesParametersInner.from_dict(_item) for _item in obj["parameters"]] if obj.get("parameters") is not None else None, - "password": obj.get("password"), - "privateKey": obj.get("privateKey"), - "privateKeyPassphrase": obj.get("privateKeyPassphrase"), - "schema": obj.get("schema"), - "token": obj.get("token"), - "type": obj.get("type"), - "url": obj.get("url"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_document.py deleted file mode 100644 index 9e234fed3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_data_source_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_data_source_patch import JsonApiDataSourcePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDataSourcePatchDocument(BaseModel): - """ - JsonApiDataSourcePatchDocument - """ # noqa: E501 - data: JsonApiDataSourcePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDataSourcePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDataSourcePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDataSourcePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_linkage.py deleted file mode 100644 index e8d459f1a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out.py deleted file mode 100644 index 2d9419fb2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_dataset_out_attributes import JsonApiDatasetOutAttributes -from gooddata_api_client.models.json_api_dataset_out_relationships import JsonApiDatasetOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOut(BaseModel): - """ - JSON:API representation of dataset entity. - """ # noqa: E501 - attributes: JsonApiDatasetOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiDatasetOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDatasetOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiDatasetOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes.py deleted file mode 100644 index a64642ecb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes.py +++ /dev/null @@ -1,157 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_dataset_out_attributes_grain_inner import JsonApiDatasetOutAttributesGrainInner -from gooddata_api_client.models.json_api_dataset_out_attributes_reference_properties_inner import JsonApiDatasetOutAttributesReferencePropertiesInner -from gooddata_api_client.models.json_api_dataset_out_attributes_sql import JsonApiDatasetOutAttributesSql -from gooddata_api_client.models.json_api_dataset_out_attributes_workspace_data_filter_columns_inner import JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner -from gooddata_api_client.models.json_api_dataset_out_attributes_workspace_data_filter_references_inner import JsonApiDatasetOutAttributesWorkspaceDataFilterReferencesInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutAttributes(BaseModel): - """ - JsonApiDatasetOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - data_source_table_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="dataSourceTableId") - data_source_table_path: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="Path to database table.", alias="dataSourceTablePath") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - grain: Optional[List[JsonApiDatasetOutAttributesGrainInner]] = None - precedence: Optional[StrictInt] = None - reference_properties: Optional[List[JsonApiDatasetOutAttributesReferencePropertiesInner]] = Field(default=None, alias="referenceProperties") - sql: Optional[JsonApiDatasetOutAttributesSql] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - type: StrictStr - workspace_data_filter_columns: Optional[List[JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner]] = Field(default=None, alias="workspaceDataFilterColumns") - workspace_data_filter_references: Optional[List[JsonApiDatasetOutAttributesWorkspaceDataFilterReferencesInner]] = Field(default=None, alias="workspaceDataFilterReferences") - __properties: ClassVar[List[str]] = ["areRelationsValid", "dataSourceTableId", "dataSourceTablePath", "description", "grain", "precedence", "referenceProperties", "sql", "tags", "title", "type", "workspaceDataFilterColumns", "workspaceDataFilterReferences"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['NORMAL', 'DATE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('NORMAL', 'DATE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in grain (list) - _items = [] - if self.grain: - for _item_grain in self.grain: - if _item_grain: - _items.append(_item_grain.to_dict()) - _dict['grain'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in reference_properties (list) - _items = [] - if self.reference_properties: - for _item_reference_properties in self.reference_properties: - if _item_reference_properties: - _items.append(_item_reference_properties.to_dict()) - _dict['referenceProperties'] = _items - # override the default output from pydantic by calling `to_dict()` of sql - if self.sql: - _dict['sql'] = self.sql.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filter_columns (list) - _items = [] - if self.workspace_data_filter_columns: - for _item_workspace_data_filter_columns in self.workspace_data_filter_columns: - if _item_workspace_data_filter_columns: - _items.append(_item_workspace_data_filter_columns.to_dict()) - _dict['workspaceDataFilterColumns'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspace_data_filter_references (list) - _items = [] - if self.workspace_data_filter_references: - for _item_workspace_data_filter_references in self.workspace_data_filter_references: - if _item_workspace_data_filter_references: - _items.append(_item_workspace_data_filter_references.to_dict()) - _dict['workspaceDataFilterReferences'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "dataSourceTableId": obj.get("dataSourceTableId"), - "dataSourceTablePath": obj.get("dataSourceTablePath"), - "description": obj.get("description"), - "grain": [JsonApiDatasetOutAttributesGrainInner.from_dict(_item) for _item in obj["grain"]] if obj.get("grain") is not None else None, - "precedence": obj.get("precedence"), - "referenceProperties": [JsonApiDatasetOutAttributesReferencePropertiesInner.from_dict(_item) for _item in obj["referenceProperties"]] if obj.get("referenceProperties") is not None else None, - "sql": JsonApiDatasetOutAttributesSql.from_dict(obj["sql"]) if obj.get("sql") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type"), - "workspaceDataFilterColumns": [JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner.from_dict(_item) for _item in obj["workspaceDataFilterColumns"]] if obj.get("workspaceDataFilterColumns") is not None else None, - "workspaceDataFilterReferences": [JsonApiDatasetOutAttributesWorkspaceDataFilterReferencesInner.from_dict(_item) for _item in obj["workspaceDataFilterReferences"]] if obj.get("workspaceDataFilterReferences") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_grain_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_grain_inner.py deleted file mode 100644 index f69a2dee6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_grain_inner.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutAttributesGrainInner(BaseModel): - """ - JsonApiDatasetOutAttributesGrainInner - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['attribute', 'date']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('attribute', 'date')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesGrainInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesGrainInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_reference_properties_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_reference_properties_inner.py deleted file mode 100644 index 1578fccec..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_reference_properties_inner.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.dataset_reference_identifier import DatasetReferenceIdentifier -from gooddata_api_client.models.reference_source_column import ReferenceSourceColumn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutAttributesReferencePropertiesInner(BaseModel): - """ - JsonApiDatasetOutAttributesReferencePropertiesInner - """ # noqa: E501 - identifier: DatasetReferenceIdentifier - multivalue: StrictBool - source_column_data_types: Optional[List[StrictStr]] = Field(default=None, alias="sourceColumnDataTypes") - source_columns: Optional[List[StrictStr]] = Field(default=None, alias="sourceColumns") - sources: Optional[List[ReferenceSourceColumn]] = None - __properties: ClassVar[List[str]] = ["identifier", "multivalue", "sourceColumnDataTypes", "sourceColumns", "sources"] - - @field_validator('source_column_data_types') - def source_column_data_types_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - raise ValueError("each list item must be one of ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesReferencePropertiesInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identifier - if self.identifier: - _dict['identifier'] = self.identifier.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in sources (list) - _items = [] - if self.sources: - for _item_sources in self.sources: - if _item_sources: - _items.append(_item_sources.to_dict()) - _dict['sources'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesReferencePropertiesInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identifier": DatasetReferenceIdentifier.from_dict(obj["identifier"]) if obj.get("identifier") is not None else None, - "multivalue": obj.get("multivalue"), - "sourceColumnDataTypes": obj.get("sourceColumnDataTypes"), - "sourceColumns": obj.get("sourceColumns"), - "sources": [ReferenceSourceColumn.from_dict(_item) for _item in obj["sources"]] if obj.get("sources") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_sql.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_sql.py deleted file mode 100644 index 768245f7d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_sql.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutAttributesSql(BaseModel): - """ - JsonApiDatasetOutAttributesSql - """ # noqa: E501 - data_source_id: StrictStr = Field(alias="dataSourceId") - statement: StrictStr - __properties: ClassVar[List[str]] = ["dataSourceId", "statement"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesSql from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesSql from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSourceId": obj.get("dataSourceId"), - "statement": obj.get("statement") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_columns_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_columns_inner.py deleted file mode 100644 index 48d5daba3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_columns_inner.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner(BaseModel): - """ - JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner - """ # noqa: E501 - data_type: StrictStr = Field(alias="dataType") - name: StrictStr - __properties: ClassVar[List[str]] = ["dataType", "name"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesWorkspaceDataFilterColumnsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataType": obj.get("dataType"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_references_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_references_inner.py deleted file mode 100644 index af3bb1797..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_attributes_workspace_data_filter_references_inner.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.dataset_workspace_data_filter_identifier import DatasetWorkspaceDataFilterIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutAttributesWorkspaceDataFilterReferencesInner(BaseModel): - """ - Workspace data filter reference. - """ # noqa: E501 - filter_column: StrictStr = Field(alias="filterColumn") - filter_column_data_type: StrictStr = Field(alias="filterColumnDataType") - filter_id: DatasetWorkspaceDataFilterIdentifier = Field(alias="filterId") - __properties: ClassVar[List[str]] = ["filterColumn", "filterColumnDataType", "filterId"] - - @field_validator('filter_column_data_type') - def filter_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesWorkspaceDataFilterReferencesInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of filter_id - if self.filter_id: - _dict['filterId'] = self.filter_id.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutAttributesWorkspaceDataFilterReferencesInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filterColumn": obj.get("filterColumn"), - "filterColumnDataType": obj.get("filterColumnDataType"), - "filterId": DatasetWorkspaceDataFilterIdentifier.from_dict(obj["filterId"]) if obj.get("filterId") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_document.py deleted file mode 100644 index f175859aa..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_dataset_out import JsonApiDatasetOut -from gooddata_api_client.models.json_api_dataset_out_includes import JsonApiDatasetOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutDocument(BaseModel): - """ - JsonApiDatasetOutDocument - """ # noqa: E501 - data: JsonApiDatasetOut - included: Optional[List[JsonApiDatasetOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDatasetOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiDatasetOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_includes.py deleted file mode 100644 index ee608c7df..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_includes.py +++ /dev/null @@ -1,186 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_with_links import JsonApiAggregatedFactOutWithLinks -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_fact_out_with_links import JsonApiFactOutWithLinks -from gooddata_api_client.models.json_api_workspace_data_filter_out_with_links import JsonApiWorkspaceDataFilterOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIDATASETOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAggregatedFactOutWithLinks", "JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks", "JsonApiWorkspaceDataFilterOutWithLinks"] - -class JsonApiDatasetOutIncludes(BaseModel): - """ - JsonApiDatasetOutIncludes - """ - # data type: JsonApiAttributeOutWithLinks - oneof_schema_1_validator: Optional[JsonApiAttributeOutWithLinks] = None - # data type: JsonApiFactOutWithLinks - oneof_schema_2_validator: Optional[JsonApiFactOutWithLinks] = None - # data type: JsonApiAggregatedFactOutWithLinks - oneof_schema_3_validator: Optional[JsonApiAggregatedFactOutWithLinks] = None - # data type: JsonApiDatasetOutWithLinks - oneof_schema_4_validator: Optional[JsonApiDatasetOutWithLinks] = None - # data type: JsonApiWorkspaceDataFilterOutWithLinks - oneof_schema_5_validator: Optional[JsonApiWorkspaceDataFilterOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAggregatedFactOutWithLinks, JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiWorkspaceDataFilterOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAggregatedFactOutWithLinks", "JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks", "JsonApiWorkspaceDataFilterOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiDatasetOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiAttributeOutWithLinks - if not isinstance(v, JsonApiAttributeOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiFactOutWithLinks - if not isinstance(v, JsonApiFactOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiFactOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAggregatedFactOutWithLinks - if not isinstance(v, JsonApiAggregatedFactOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAggregatedFactOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiWorkspaceDataFilterOutWithLinks - if not isinstance(v, JsonApiWorkspaceDataFilterOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiWorkspaceDataFilterOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiDatasetOutIncludes with oneOf schemas: JsonApiAggregatedFactOutWithLinks, JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiWorkspaceDataFilterOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiAttributeOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAttributeOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiFactOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiFactOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAggregatedFactOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAggregatedFactOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiWorkspaceDataFilterOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiWorkspaceDataFilterOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiDatasetOutIncludes with oneOf schemas: JsonApiAggregatedFactOutWithLinks, JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiWorkspaceDataFilterOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAggregatedFactOutWithLinks, JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiWorkspaceDataFilterOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_list.py deleted file mode 100644 index 3b857324a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_dataset_out_includes import JsonApiDatasetOutIncludes -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiDatasetOutWithLinks] - included: Optional[List[JsonApiDatasetOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiDatasetOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiDatasetOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships.py deleted file mode 100644 index 45cfa1303..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_datasets import JsonApiAnalyticalDashboardOutRelationshipsDatasets -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships_attributes import JsonApiAttributeHierarchyOutRelationshipsAttributes -from gooddata_api_client.models.json_api_dataset_out_relationships_aggregated_facts import JsonApiDatasetOutRelationshipsAggregatedFacts -from gooddata_api_client.models.json_api_dataset_out_relationships_facts import JsonApiDatasetOutRelationshipsFacts -from gooddata_api_client.models.json_api_dataset_out_relationships_workspace_data_filters import JsonApiDatasetOutRelationshipsWorkspaceDataFilters -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutRelationships(BaseModel): - """ - JsonApiDatasetOutRelationships - """ # noqa: E501 - aggregated_facts: Optional[JsonApiDatasetOutRelationshipsAggregatedFacts] = Field(default=None, alias="aggregatedFacts") - attributes: Optional[JsonApiAttributeHierarchyOutRelationshipsAttributes] = None - facts: Optional[JsonApiDatasetOutRelationshipsFacts] = None - references: Optional[JsonApiAnalyticalDashboardOutRelationshipsDatasets] = None - workspace_data_filters: Optional[JsonApiDatasetOutRelationshipsWorkspaceDataFilters] = Field(default=None, alias="workspaceDataFilters") - __properties: ClassVar[List[str]] = ["aggregatedFacts", "attributes", "facts", "references", "workspaceDataFilters"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of aggregated_facts - if self.aggregated_facts: - _dict['aggregatedFacts'] = self.aggregated_facts.to_dict() - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of facts - if self.facts: - _dict['facts'] = self.facts.to_dict() - # override the default output from pydantic by calling `to_dict()` of references - if self.references: - _dict['references'] = self.references.to_dict() - # override the default output from pydantic by calling `to_dict()` of workspace_data_filters - if self.workspace_data_filters: - _dict['workspaceDataFilters'] = self.workspace_data_filters.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "aggregatedFacts": JsonApiDatasetOutRelationshipsAggregatedFacts.from_dict(obj["aggregatedFacts"]) if obj.get("aggregatedFacts") is not None else None, - "attributes": JsonApiAttributeHierarchyOutRelationshipsAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "facts": JsonApiDatasetOutRelationshipsFacts.from_dict(obj["facts"]) if obj.get("facts") is not None else None, - "references": JsonApiAnalyticalDashboardOutRelationshipsDatasets.from_dict(obj["references"]) if obj.get("references") is not None else None, - "workspaceDataFilters": JsonApiDatasetOutRelationshipsWorkspaceDataFilters.from_dict(obj["workspaceDataFilters"]) if obj.get("workspaceDataFilters") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_aggregated_facts.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_aggregated_facts.py deleted file mode 100644 index 03df8778b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_aggregated_facts.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_aggregated_fact_linkage import JsonApiAggregatedFactLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutRelationshipsAggregatedFacts(BaseModel): - """ - JsonApiDatasetOutRelationshipsAggregatedFacts - """ # noqa: E501 - data: List[JsonApiAggregatedFactLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationshipsAggregatedFacts from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationshipsAggregatedFacts from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiAggregatedFactLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_facts.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_facts.py deleted file mode 100644 index d4286188f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_facts.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_fact_linkage import JsonApiFactLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutRelationshipsFacts(BaseModel): - """ - JsonApiDatasetOutRelationshipsFacts - """ # noqa: E501 - data: List[JsonApiFactLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationshipsFacts from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationshipsFacts from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiFactLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_workspace_data_filters.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_workspace_data_filters.py deleted file mode 100644 index c5358f611..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_relationships_workspace_data_filters.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_data_filter_linkage import JsonApiWorkspaceDataFilterLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutRelationshipsWorkspaceDataFilters(BaseModel): - """ - JsonApiDatasetOutRelationshipsWorkspaceDataFilters - """ # noqa: E501 - data: List[JsonApiWorkspaceDataFilterLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationshipsWorkspaceDataFilters from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutRelationshipsWorkspaceDataFilters from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceDataFilterLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_with_links.py deleted file mode 100644 index 45376f728..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_dataset_out_attributes import JsonApiDatasetOutAttributes -from gooddata_api_client.models.json_api_dataset_out_relationships import JsonApiDatasetOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetOutWithLinks(BaseModel): - """ - JsonApiDatasetOutWithLinks - """ # noqa: E501 - attributes: JsonApiDatasetOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiDatasetOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiDatasetOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiDatasetOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch.py deleted file mode 100644 index b9a47e24d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_attribute_patch_attributes import JsonApiAttributePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetPatch(BaseModel): - """ - JSON:API representation of patching dataset entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributePatchAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch_document.py deleted file mode 100644 index 78739cc1b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_dataset_patch import JsonApiDatasetPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiDatasetPatchDocument(BaseModel): - """ - JsonApiDatasetPatchDocument - """ # noqa: E501 - data: JsonApiDatasetPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiDatasetPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiDatasetPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiDatasetPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_dataset_to_one_linkage.py deleted file mode 100644 index e0b8657bf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_dataset_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_dataset_linkage import JsonApiDatasetLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIDATASETTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiDatasetLinkage"] - -class JsonApiDatasetToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiDatasetLinkage - oneof_schema_1_validator: Optional[JsonApiDatasetLinkage] = None - actual_instance: Optional[Union[JsonApiDatasetLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiDatasetLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiDatasetToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiDatasetLinkage - if not isinstance(v, JsonApiDatasetLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiDatasetToOneLinkage with oneOf schemas: JsonApiDatasetLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiDatasetLinkage - try: - if match == 0: - instance.actual_instance = JsonApiDatasetLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiDatasetToOneLinkage with oneOf schemas: JsonApiDatasetLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiDatasetLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out.py deleted file mode 100644 index e7d5e3683..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_entitlement_out_attributes import JsonApiEntitlementOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiEntitlementOut(BaseModel): - """ - JSON:API representation of entitlement entity. - """ # noqa: E501 - attributes: Optional[JsonApiEntitlementOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['entitlement']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('entitlement')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiEntitlementOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_attributes.py deleted file mode 100644 index bd1b7a8eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_attributes.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import date -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiEntitlementOutAttributes(BaseModel): - """ - JsonApiEntitlementOutAttributes - """ # noqa: E501 - expiry: Optional[date] = None - value: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["expiry", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "expiry": obj.get("expiry"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_document.py deleted file mode 100644 index 04e3b9921..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_entitlement_out import JsonApiEntitlementOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiEntitlementOutDocument(BaseModel): - """ - JsonApiEntitlementOutDocument - """ # noqa: E501 - data: JsonApiEntitlementOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiEntitlementOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_list.py deleted file mode 100644 index a385f0869..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_entitlement_out_with_links import JsonApiEntitlementOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiEntitlementOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiEntitlementOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiEntitlementOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_with_links.py deleted file mode 100644 index b86ea1937..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_entitlement_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_entitlement_out_attributes import JsonApiEntitlementOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiEntitlementOutWithLinks(BaseModel): - """ - JsonApiEntitlementOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiEntitlementOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['entitlement']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('entitlement')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiEntitlementOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiEntitlementOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in.py deleted file mode 100644 index e7443c632..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_definition_in_attributes import JsonApiExportDefinitionInAttributes -from gooddata_api_client.models.json_api_export_definition_in_relationships import JsonApiExportDefinitionInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionIn(BaseModel): - """ - JSON:API representation of exportDefinition entity. - """ # noqa: E501 - attributes: Optional[JsonApiExportDefinitionInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiExportDefinitionInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportDefinitionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiExportDefinitionInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes.py deleted file mode 100644 index 5870308d9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_definition_in_attributes_request_payload import JsonApiExportDefinitionInAttributesRequestPayload -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionInAttributes(BaseModel): - """ - JsonApiExportDefinitionInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - request_payload: Optional[JsonApiExportDefinitionInAttributesRequestPayload] = Field(default=None, alias="requestPayload") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "requestPayload", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "requestPayload": JsonApiExportDefinitionInAttributesRequestPayload.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes_request_payload.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes_request_payload.py deleted file mode 100644 index e810d1ea1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_attributes_request_payload.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.tabular_export_request import TabularExportRequest -from gooddata_api_client.models.visual_export_request import VisualExportRequest -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIEXPORTDEFINITIONINATTRIBUTESREQUESTPAYLOAD_ONE_OF_SCHEMAS = ["TabularExportRequest", "VisualExportRequest"] - -class JsonApiExportDefinitionInAttributesRequestPayload(BaseModel): - """ - JSON content to be used as export request payload for /export/tabular and /export/visual endpoints. - """ - # data type: VisualExportRequest - oneof_schema_1_validator: Optional[VisualExportRequest] = None - # data type: TabularExportRequest - oneof_schema_2_validator: Optional[TabularExportRequest] = None - actual_instance: Optional[Union[TabularExportRequest, VisualExportRequest]] = None - one_of_schemas: Set[str] = { "TabularExportRequest", "VisualExportRequest" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiExportDefinitionInAttributesRequestPayload.model_construct() - error_messages = [] - match = 0 - # validate data type: VisualExportRequest - if not isinstance(v, VisualExportRequest): - error_messages.append(f"Error! Input type `{type(v)}` is not `VisualExportRequest`") - else: - match += 1 - # validate data type: TabularExportRequest - if not isinstance(v, TabularExportRequest): - error_messages.append(f"Error! Input type `{type(v)}` is not `TabularExportRequest`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiExportDefinitionInAttributesRequestPayload with oneOf schemas: TabularExportRequest, VisualExportRequest. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into VisualExportRequest - try: - if match == 0: - instance.actual_instance = VisualExportRequest.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into TabularExportRequest - try: - if match == 0: - instance.actual_instance = TabularExportRequest.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiExportDefinitionInAttributesRequestPayload with oneOf schemas: TabularExportRequest, VisualExportRequest. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], TabularExportRequest, VisualExportRequest]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_document.py deleted file mode 100644 index 2956c19d3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_definition_in import JsonApiExportDefinitionIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionInDocument(BaseModel): - """ - JsonApiExportDefinitionInDocument - """ # noqa: E501 - data: JsonApiExportDefinitionIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportDefinitionIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships.py deleted file mode 100644 index f23efc1f4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_export_definition_in_relationships_visualization_object import JsonApiExportDefinitionInRelationshipsVisualizationObject -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionInRelationships(BaseModel): - """ - JsonApiExportDefinitionInRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - visualization_object: Optional[JsonApiExportDefinitionInRelationshipsVisualizationObject] = Field(default=None, alias="visualizationObject") - __properties: ClassVar[List[str]] = ["analyticalDashboard", "visualizationObject"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of visualization_object - if self.visualization_object: - _dict['visualizationObject'] = self.visualization_object.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "visualizationObject": JsonApiExportDefinitionInRelationshipsVisualizationObject.from_dict(obj["visualizationObject"]) if obj.get("visualizationObject") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships_visualization_object.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships_visualization_object.py deleted file mode 100644 index 9eeb2458b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_in_relationships_visualization_object.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_visualization_object_to_one_linkage import JsonApiVisualizationObjectToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionInRelationshipsVisualizationObject(BaseModel): - """ - JsonApiExportDefinitionInRelationshipsVisualizationObject - """ # noqa: E501 - data: Optional[JsonApiVisualizationObjectToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInRelationshipsVisualizationObject from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionInRelationshipsVisualizationObject from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiVisualizationObjectToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_linkage.py deleted file mode 100644 index 250519d5b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out.py deleted file mode 100644 index eda89f9ae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_export_definition_out_attributes import JsonApiExportDefinitionOutAttributes -from gooddata_api_client.models.json_api_export_definition_out_relationships import JsonApiExportDefinitionOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionOut(BaseModel): - """ - JSON:API representation of exportDefinition entity. - """ # noqa: E501 - attributes: Optional[JsonApiExportDefinitionOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiExportDefinitionOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportDefinitionOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiExportDefinitionOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_attributes.py deleted file mode 100644 index af94da1ef..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_attributes.py +++ /dev/null @@ -1,140 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_definition_in_attributes_request_payload import JsonApiExportDefinitionInAttributesRequestPayload -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionOutAttributes(BaseModel): - """ - JsonApiExportDefinitionOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - request_payload: Optional[JsonApiExportDefinitionInAttributesRequestPayload] = Field(default=None, alias="requestPayload") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "createdAt", "description", "modifiedAt", "requestPayload", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of request_payload - if self.request_payload: - _dict['requestPayload'] = self.request_payload.to_dict() - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "modifiedAt": obj.get("modifiedAt"), - "requestPayload": JsonApiExportDefinitionInAttributesRequestPayload.from_dict(obj["requestPayload"]) if obj.get("requestPayload") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_document.py deleted file mode 100644 index bce845d7e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_export_definition_out import JsonApiExportDefinitionOut -from gooddata_api_client.models.json_api_export_definition_out_includes import JsonApiExportDefinitionOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionOutDocument(BaseModel): - """ - JsonApiExportDefinitionOutDocument - """ # noqa: E501 - data: JsonApiExportDefinitionOut - included: Optional[List[JsonApiExportDefinitionOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportDefinitionOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiExportDefinitionOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_includes.py deleted file mode 100644 index 5040b1ff3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_includes.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.json_api_automation_out_with_links import JsonApiAutomationOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.json_api_visualization_object_out_with_links import JsonApiVisualizationObjectOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIEXPORTDEFINITIONOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardOutWithLinks", "JsonApiAutomationOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiVisualizationObjectOutWithLinks"] - -class JsonApiExportDefinitionOutIncludes(BaseModel): - """ - JsonApiExportDefinitionOutIncludes - """ - # data type: JsonApiVisualizationObjectOutWithLinks - oneof_schema_1_validator: Optional[JsonApiVisualizationObjectOutWithLinks] = None - # data type: JsonApiAnalyticalDashboardOutWithLinks - oneof_schema_2_validator: Optional[JsonApiAnalyticalDashboardOutWithLinks] = None - # data type: JsonApiAutomationOutWithLinks - oneof_schema_3_validator: Optional[JsonApiAutomationOutWithLinks] = None - # data type: JsonApiUserIdentifierOutWithLinks - oneof_schema_4_validator: Optional[JsonApiUserIdentifierOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardOutWithLinks", "JsonApiAutomationOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiVisualizationObjectOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiExportDefinitionOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiVisualizationObjectOutWithLinks - if not isinstance(v, JsonApiVisualizationObjectOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiVisualizationObjectOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAnalyticalDashboardOutWithLinks - if not isinstance(v, JsonApiAnalyticalDashboardOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAutomationOutWithLinks - if not isinstance(v, JsonApiAutomationOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAutomationOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserIdentifierOutWithLinks - if not isinstance(v, JsonApiUserIdentifierOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiExportDefinitionOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiVisualizationObjectOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiVisualizationObjectOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAnalyticalDashboardOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAutomationOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAutomationOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserIdentifierOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiExportDefinitionOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiVisualizationObjectOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_list.py deleted file mode 100644 index 877f4478b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_export_definition_out_includes import JsonApiExportDefinitionOutIncludes -from gooddata_api_client.models.json_api_export_definition_out_with_links import JsonApiExportDefinitionOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiExportDefinitionOutWithLinks] - included: Optional[List[JsonApiExportDefinitionOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiExportDefinitionOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiExportDefinitionOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_relationships.py deleted file mode 100644 index c56ab3df9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_relationships.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_automation_result_out_relationships_automation import JsonApiAutomationResultOutRelationshipsAutomation -from gooddata_api_client.models.json_api_export_definition_in_relationships_visualization_object import JsonApiExportDefinitionInRelationshipsVisualizationObject -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionOutRelationships(BaseModel): - """ - JsonApiExportDefinitionOutRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - automation: Optional[JsonApiAutomationResultOutRelationshipsAutomation] = None - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - visualization_object: Optional[JsonApiExportDefinitionInRelationshipsVisualizationObject] = Field(default=None, alias="visualizationObject") - __properties: ClassVar[List[str]] = ["analyticalDashboard", "automation", "createdBy", "modifiedBy", "visualizationObject"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of automation - if self.automation: - _dict['automation'] = self.automation.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of visualization_object - if self.visualization_object: - _dict['visualizationObject'] = self.visualization_object.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "automation": JsonApiAutomationResultOutRelationshipsAutomation.from_dict(obj["automation"]) if obj.get("automation") is not None else None, - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "visualizationObject": JsonApiExportDefinitionInRelationshipsVisualizationObject.from_dict(obj["visualizationObject"]) if obj.get("visualizationObject") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_with_links.py deleted file mode 100644 index 0a21c4583..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_export_definition_out_attributes import JsonApiExportDefinitionOutAttributes -from gooddata_api_client.models.json_api_export_definition_out_relationships import JsonApiExportDefinitionOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionOutWithLinks(BaseModel): - """ - JsonApiExportDefinitionOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiExportDefinitionOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiExportDefinitionOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportDefinitionOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiExportDefinitionOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch.py deleted file mode 100644 index 2b17e7d42..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_definition_in_attributes import JsonApiExportDefinitionInAttributes -from gooddata_api_client.models.json_api_export_definition_in_relationships import JsonApiExportDefinitionInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionPatch(BaseModel): - """ - JSON:API representation of patching exportDefinition entity. - """ # noqa: E501 - attributes: Optional[JsonApiExportDefinitionInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiExportDefinitionInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportDefinitionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiExportDefinitionInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch_document.py deleted file mode 100644 index 8ecb6a454..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_definition_patch import JsonApiExportDefinitionPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionPatchDocument(BaseModel): - """ - JsonApiExportDefinitionPatchDocument - """ # noqa: E501 - data: JsonApiExportDefinitionPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportDefinitionPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id.py deleted file mode 100644 index 755279bbe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_definition_in_attributes import JsonApiExportDefinitionInAttributes -from gooddata_api_client.models.json_api_export_definition_in_relationships import JsonApiExportDefinitionInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionPostOptionalId(BaseModel): - """ - JSON:API representation of exportDefinition entity. - """ # noqa: E501 - attributes: Optional[JsonApiExportDefinitionInAttributes] = None - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - relationships: Optional[JsonApiExportDefinitionInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportDefinition']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportDefinition')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportDefinitionInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiExportDefinitionInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id_document.py deleted file mode 100644 index 63b0156ee..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_definition_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_definition_post_optional_id import JsonApiExportDefinitionPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportDefinitionPostOptionalIdDocument(BaseModel): - """ - JsonApiExportDefinitionPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiExportDefinitionPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportDefinitionPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportDefinitionPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in.py deleted file mode 100644 index 61906d5c8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_in_attributes import JsonApiExportTemplateInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateIn(BaseModel): - """ - JSON:API representation of exportTemplate entity. - """ # noqa: E501 - attributes: JsonApiExportTemplateInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportTemplate']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportTemplate')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportTemplateInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes.py deleted file mode 100644 index e338e9ece..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_in_attributes_dashboard_slides_template import JsonApiExportTemplateInAttributesDashboardSlidesTemplate -from gooddata_api_client.models.json_api_export_template_in_attributes_widget_slides_template import JsonApiExportTemplateInAttributesWidgetSlidesTemplate -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateInAttributes(BaseModel): - """ - JsonApiExportTemplateInAttributes - """ # noqa: E501 - dashboard_slides_template: Optional[JsonApiExportTemplateInAttributesDashboardSlidesTemplate] = Field(default=None, alias="dashboardSlidesTemplate") - name: Annotated[str, Field(strict=True, max_length=255)] = Field(description="User-facing name of the Slides template.") - widget_slides_template: Optional[JsonApiExportTemplateInAttributesWidgetSlidesTemplate] = Field(default=None, alias="widgetSlidesTemplate") - __properties: ClassVar[List[str]] = ["dashboardSlidesTemplate", "name", "widgetSlidesTemplate"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_slides_template - if self.dashboard_slides_template: - _dict['dashboardSlidesTemplate'] = self.dashboard_slides_template.to_dict() - # override the default output from pydantic by calling `to_dict()` of widget_slides_template - if self.widget_slides_template: - _dict['widgetSlidesTemplate'] = self.widget_slides_template.to_dict() - # set to None if dashboard_slides_template (nullable) is None - # and model_fields_set contains the field - if self.dashboard_slides_template is None and "dashboard_slides_template" in self.model_fields_set: - _dict['dashboardSlidesTemplate'] = None - - # set to None if widget_slides_template (nullable) is None - # and model_fields_set contains the field - if self.widget_slides_template is None and "widget_slides_template" in self.model_fields_set: - _dict['widgetSlidesTemplate'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardSlidesTemplate": JsonApiExportTemplateInAttributesDashboardSlidesTemplate.from_dict(obj["dashboardSlidesTemplate"]) if obj.get("dashboardSlidesTemplate") is not None else None, - "name": obj.get("name"), - "widgetSlidesTemplate": JsonApiExportTemplateInAttributesWidgetSlidesTemplate.from_dict(obj["widgetSlidesTemplate"]) if obj.get("widgetSlidesTemplate") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_dashboard_slides_template.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_dashboard_slides_template.py deleted file mode 100644 index 1f3a60c2c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_dashboard_slides_template.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.content_slide_template import ContentSlideTemplate -from gooddata_api_client.models.cover_slide_template import CoverSlideTemplate -from gooddata_api_client.models.intro_slide_template import IntroSlideTemplate -from gooddata_api_client.models.section_slide_template import SectionSlideTemplate -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateInAttributesDashboardSlidesTemplate(BaseModel): - """ - Template for dashboard slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} - """ # noqa: E501 - applied_on: Annotated[List[StrictStr], Field(min_length=1)] = Field(description="Export types this template applies to.", alias="appliedOn") - content_slide: Optional[ContentSlideTemplate] = Field(default=None, alias="contentSlide") - cover_slide: Optional[CoverSlideTemplate] = Field(default=None, alias="coverSlide") - intro_slide: Optional[IntroSlideTemplate] = Field(default=None, alias="introSlide") - section_slide: Optional[SectionSlideTemplate] = Field(default=None, alias="sectionSlide") - __properties: ClassVar[List[str]] = ["appliedOn", "contentSlide", "coverSlide", "introSlide", "sectionSlide"] - - @field_validator('applied_on') - def applied_on_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['PDF', 'PPTX']): - raise ValueError("each list item must be one of ('PDF', 'PPTX')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInAttributesDashboardSlidesTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content_slide - if self.content_slide: - _dict['contentSlide'] = self.content_slide.to_dict() - # override the default output from pydantic by calling `to_dict()` of cover_slide - if self.cover_slide: - _dict['coverSlide'] = self.cover_slide.to_dict() - # override the default output from pydantic by calling `to_dict()` of intro_slide - if self.intro_slide: - _dict['introSlide'] = self.intro_slide.to_dict() - # override the default output from pydantic by calling `to_dict()` of section_slide - if self.section_slide: - _dict['sectionSlide'] = self.section_slide.to_dict() - # set to None if content_slide (nullable) is None - # and model_fields_set contains the field - if self.content_slide is None and "content_slide" in self.model_fields_set: - _dict['contentSlide'] = None - - # set to None if cover_slide (nullable) is None - # and model_fields_set contains the field - if self.cover_slide is None and "cover_slide" in self.model_fields_set: - _dict['coverSlide'] = None - - # set to None if intro_slide (nullable) is None - # and model_fields_set contains the field - if self.intro_slide is None and "intro_slide" in self.model_fields_set: - _dict['introSlide'] = None - - # set to None if section_slide (nullable) is None - # and model_fields_set contains the field - if self.section_slide is None and "section_slide" in self.model_fields_set: - _dict['sectionSlide'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInAttributesDashboardSlidesTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "appliedOn": obj.get("appliedOn"), - "contentSlide": ContentSlideTemplate.from_dict(obj["contentSlide"]) if obj.get("contentSlide") is not None else None, - "coverSlide": CoverSlideTemplate.from_dict(obj["coverSlide"]) if obj.get("coverSlide") is not None else None, - "introSlide": IntroSlideTemplate.from_dict(obj["introSlide"]) if obj.get("introSlide") is not None else None, - "sectionSlide": SectionSlideTemplate.from_dict(obj["sectionSlide"]) if obj.get("sectionSlide") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_widget_slides_template.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_widget_slides_template.py deleted file mode 100644 index 5641c8cb2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_attributes_widget_slides_template.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.content_slide_template import ContentSlideTemplate -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateInAttributesWidgetSlidesTemplate(BaseModel): - """ - Template for widget slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} - """ # noqa: E501 - applied_on: Annotated[List[StrictStr], Field(min_length=1)] = Field(description="Export types this template applies to.", alias="appliedOn") - content_slide: Optional[ContentSlideTemplate] = Field(default=None, alias="contentSlide") - __properties: ClassVar[List[str]] = ["appliedOn", "contentSlide"] - - @field_validator('applied_on') - def applied_on_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['PDF', 'PPTX']): - raise ValueError("each list item must be one of ('PDF', 'PPTX')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInAttributesWidgetSlidesTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content_slide - if self.content_slide: - _dict['contentSlide'] = self.content_slide.to_dict() - # set to None if content_slide (nullable) is None - # and model_fields_set contains the field - if self.content_slide is None and "content_slide" in self.model_fields_set: - _dict['contentSlide'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInAttributesWidgetSlidesTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "appliedOn": obj.get("appliedOn"), - "contentSlide": ContentSlideTemplate.from_dict(obj["contentSlide"]) if obj.get("contentSlide") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_document.py deleted file mode 100644 index 1ea2e2cb3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_template_in import JsonApiExportTemplateIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateInDocument(BaseModel): - """ - JsonApiExportTemplateInDocument - """ # noqa: E501 - data: JsonApiExportTemplateIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportTemplateIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out.py deleted file mode 100644 index b466feb78..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_in_attributes import JsonApiExportTemplateInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateOut(BaseModel): - """ - JSON:API representation of exportTemplate entity. - """ # noqa: E501 - attributes: JsonApiExportTemplateInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportTemplate']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportTemplate')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportTemplateInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_document.py deleted file mode 100644 index 5e1382916..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_export_template_out import JsonApiExportTemplateOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateOutDocument(BaseModel): - """ - JsonApiExportTemplateOutDocument - """ # noqa: E501 - data: JsonApiExportTemplateOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportTemplateOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_list.py deleted file mode 100644 index 662c034d8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_export_template_out_with_links import JsonApiExportTemplateOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiExportTemplateOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiExportTemplateOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_with_links.py deleted file mode 100644 index c3a872191..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_in_attributes import JsonApiExportTemplateInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplateOutWithLinks(BaseModel): - """ - JsonApiExportTemplateOutWithLinks - """ # noqa: E501 - attributes: JsonApiExportTemplateInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportTemplate']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportTemplate')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplateOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportTemplateInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch.py deleted file mode 100644 index 685e2ed90..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_patch_attributes import JsonApiExportTemplatePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplatePatch(BaseModel): - """ - JSON:API representation of patching exportTemplate entity. - """ # noqa: E501 - attributes: JsonApiExportTemplatePatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportTemplate']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportTemplate')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportTemplatePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_attributes.py deleted file mode 100644 index 54d8bf52a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_attributes.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_in_attributes_dashboard_slides_template import JsonApiExportTemplateInAttributesDashboardSlidesTemplate -from gooddata_api_client.models.json_api_export_template_in_attributes_widget_slides_template import JsonApiExportTemplateInAttributesWidgetSlidesTemplate -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplatePatchAttributes(BaseModel): - """ - JsonApiExportTemplatePatchAttributes - """ # noqa: E501 - dashboard_slides_template: Optional[JsonApiExportTemplateInAttributesDashboardSlidesTemplate] = Field(default=None, alias="dashboardSlidesTemplate") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User-facing name of the Slides template.") - widget_slides_template: Optional[JsonApiExportTemplateInAttributesWidgetSlidesTemplate] = Field(default=None, alias="widgetSlidesTemplate") - __properties: ClassVar[List[str]] = ["dashboardSlidesTemplate", "name", "widgetSlidesTemplate"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dashboard_slides_template - if self.dashboard_slides_template: - _dict['dashboardSlidesTemplate'] = self.dashboard_slides_template.to_dict() - # override the default output from pydantic by calling `to_dict()` of widget_slides_template - if self.widget_slides_template: - _dict['widgetSlidesTemplate'] = self.widget_slides_template.to_dict() - # set to None if dashboard_slides_template (nullable) is None - # and model_fields_set contains the field - if self.dashboard_slides_template is None and "dashboard_slides_template" in self.model_fields_set: - _dict['dashboardSlidesTemplate'] = None - - # set to None if widget_slides_template (nullable) is None - # and model_fields_set contains the field - if self.widget_slides_template is None and "widget_slides_template" in self.model_fields_set: - _dict['widgetSlidesTemplate'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardSlidesTemplate": JsonApiExportTemplateInAttributesDashboardSlidesTemplate.from_dict(obj["dashboardSlidesTemplate"]) if obj.get("dashboardSlidesTemplate") is not None else None, - "name": obj.get("name"), - "widgetSlidesTemplate": JsonApiExportTemplateInAttributesWidgetSlidesTemplate.from_dict(obj["widgetSlidesTemplate"]) if obj.get("widgetSlidesTemplate") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_document.py deleted file mode 100644 index d375f59f5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_template_patch import JsonApiExportTemplatePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplatePatchDocument(BaseModel): - """ - JsonApiExportTemplatePatchDocument - """ # noqa: E501 - data: JsonApiExportTemplatePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportTemplatePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id.py deleted file mode 100644 index 440586929..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_export_template_in_attributes import JsonApiExportTemplateInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplatePostOptionalId(BaseModel): - """ - JSON:API representation of exportTemplate entity. - """ # noqa: E501 - attributes: JsonApiExportTemplateInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['exportTemplate']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('exportTemplate')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiExportTemplateInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id_document.py deleted file mode 100644 index 81cadeccb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_export_template_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_export_template_post_optional_id import JsonApiExportTemplatePostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiExportTemplatePostOptionalIdDocument(BaseModel): - """ - JsonApiExportTemplatePostOptionalIdDocument - """ # noqa: E501 - data: JsonApiExportTemplatePostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiExportTemplatePostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiExportTemplatePostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_linkage.py deleted file mode 100644 index 1712328aa..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['fact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('fact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_out.py deleted file mode 100644 index 5dd923bae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_fact_out_attributes import JsonApiFactOutAttributes -from gooddata_api_client.models.json_api_fact_out_relationships import JsonApiFactOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactOut(BaseModel): - """ - JSON:API representation of fact entity. - """ # noqa: E501 - attributes: Optional[JsonApiFactOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiFactOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['fact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('fact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFactOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiFactOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_attributes.py deleted file mode 100644 index 160a05fbf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_attributes.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactOutAttributes(BaseModel): - """ - JsonApiFactOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - is_nullable: Optional[StrictBool] = Field(default=None, alias="isNullable") - null_value: Optional[StrictStr] = Field(default=None, alias="nullValue") - source_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="sourceColumn") - source_column_data_type: Optional[StrictStr] = Field(default=None, alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "isHidden", "isNullable", "nullValue", "sourceColumn", "sourceColumnDataType", "tags", "title"] - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "isNullable": obj.get("isNullable"), - "nullValue": obj.get("nullValue"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_document.py deleted file mode 100644 index 142a4dc85..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_fact_out import JsonApiFactOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactOutDocument(BaseModel): - """ - JsonApiFactOutDocument - """ # noqa: E501 - data: JsonApiFactOut - included: Optional[List[JsonApiDatasetOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFactOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiDatasetOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_list.py deleted file mode 100644 index 5a6bafd73..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_fact_out_with_links import JsonApiFactOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiFactOutWithLinks] - included: Optional[List[JsonApiDatasetOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiFactOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiDatasetOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_relationships.py deleted file mode 100644 index 4793075e5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_relationships_dataset import JsonApiAggregatedFactOutRelationshipsDataset -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactOutRelationships(BaseModel): - """ - JsonApiFactOutRelationships - """ # noqa: E501 - dataset: Optional[JsonApiAggregatedFactOutRelationshipsDataset] = None - __properties: ClassVar[List[str]] = ["dataset"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataset": JsonApiAggregatedFactOutRelationshipsDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_with_links.py deleted file mode 100644 index a64796fdb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_fact_out_attributes import JsonApiFactOutAttributes -from gooddata_api_client.models.json_api_fact_out_relationships import JsonApiFactOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactOutWithLinks(BaseModel): - """ - JsonApiFactOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiFactOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiFactOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['fact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('fact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFactOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiFactOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_patch.py deleted file mode 100644 index 036a1c792..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_attribute_patch_attributes import JsonApiAttributePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactPatch(BaseModel): - """ - JSON:API representation of patching fact entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributePatchAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['fact']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('fact')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_patch_document.py deleted file mode 100644 index 5a18895b8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_fact_patch import JsonApiFactPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFactPatchDocument(BaseModel): - """ - JsonApiFactPatchDocument - """ # noqa: E501 - data: JsonApiFactPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFactPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFactPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFactPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_fact_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_fact_to_one_linkage.py deleted file mode 100644 index f902cd9d8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_fact_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_fact_linkage import JsonApiFactLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIFACTTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiFactLinkage"] - -class JsonApiFactToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiFactLinkage - oneof_schema_1_validator: Optional[JsonApiFactLinkage] = None - actual_instance: Optional[Union[JsonApiFactLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiFactLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiFactToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiFactLinkage - if not isinstance(v, JsonApiFactLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiFactLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiFactToOneLinkage with oneOf schemas: JsonApiFactLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiFactLinkage - try: - if match == 0: - instance.actual_instance = JsonApiFactLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiFactToOneLinkage with oneOf schemas: JsonApiFactLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiFactLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in.py deleted file mode 100644 index 6399b83ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_context_in_attributes import JsonApiFilterContextInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextIn(BaseModel): - """ - JSON:API representation of filterContext entity. - """ # noqa: E501 - attributes: JsonApiFilterContextInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterContextInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_attributes.py deleted file mode 100644 index 7379af920..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_attributes.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextInAttributes(BaseModel): - """ - JsonApiFilterContextInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_document.py deleted file mode 100644 index f4b3e3e23..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_filter_context_in import JsonApiFilterContextIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextInDocument(BaseModel): - """ - JsonApiFilterContextInDocument - """ # noqa: E501 - data: JsonApiFilterContextIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterContextIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_linkage.py deleted file mode 100644 index 2a29025fb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out.py deleted file mode 100644 index 668869a2a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_filter_context_in_attributes import JsonApiFilterContextInAttributes -from gooddata_api_client.models.json_api_filter_context_out_relationships import JsonApiFilterContextOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextOut(BaseModel): - """ - JSON:API representation of filterContext entity. - """ # noqa: E501 - attributes: JsonApiFilterContextInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiFilterContextOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterContextInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiFilterContextOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_document.py deleted file mode 100644 index 2f7fc803d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_filter_context_out import JsonApiFilterContextOut -from gooddata_api_client.models.json_api_filter_context_out_includes import JsonApiFilterContextOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextOutDocument(BaseModel): - """ - JsonApiFilterContextOutDocument - """ # noqa: E501 - data: JsonApiFilterContextOut - included: Optional[List[JsonApiFilterContextOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterContextOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiFilterContextOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_includes.py deleted file mode 100644 index 230029580..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_includes.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_label_out_with_links import JsonApiLabelOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIFILTERCONTEXTOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiLabelOutWithLinks"] - -class JsonApiFilterContextOutIncludes(BaseModel): - """ - JsonApiFilterContextOutIncludes - """ - # data type: JsonApiAttributeOutWithLinks - oneof_schema_1_validator: Optional[JsonApiAttributeOutWithLinks] = None - # data type: JsonApiDatasetOutWithLinks - oneof_schema_2_validator: Optional[JsonApiDatasetOutWithLinks] = None - # data type: JsonApiLabelOutWithLinks - oneof_schema_3_validator: Optional[JsonApiLabelOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiLabelOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiFilterContextOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiAttributeOutWithLinks - if not isinstance(v, JsonApiAttributeOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiLabelOutWithLinks - if not isinstance(v, JsonApiLabelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiLabelOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiFilterContextOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiAttributeOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAttributeOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiLabelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiLabelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiFilterContextOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiLabelOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_list.py deleted file mode 100644 index 29a0c959a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_filter_context_out_includes import JsonApiFilterContextOutIncludes -from gooddata_api_client.models.json_api_filter_context_out_with_links import JsonApiFilterContextOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiFilterContextOutWithLinks] - included: Optional[List[JsonApiFilterContextOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiFilterContextOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiFilterContextOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_relationships.py deleted file mode 100644 index 479c3f1b2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_relationships.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_datasets import JsonApiAnalyticalDashboardOutRelationshipsDatasets -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_labels import JsonApiAnalyticalDashboardOutRelationshipsLabels -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships_attributes import JsonApiAttributeHierarchyOutRelationshipsAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextOutRelationships(BaseModel): - """ - JsonApiFilterContextOutRelationships - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyOutRelationshipsAttributes] = None - datasets: Optional[JsonApiAnalyticalDashboardOutRelationshipsDatasets] = None - labels: Optional[JsonApiAnalyticalDashboardOutRelationshipsLabels] = None - __properties: ClassVar[List[str]] = ["attributes", "datasets", "labels"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of datasets - if self.datasets: - _dict['datasets'] = self.datasets.to_dict() - # override the default output from pydantic by calling `to_dict()` of labels - if self.labels: - _dict['labels'] = self.labels.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyOutRelationshipsAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "datasets": JsonApiAnalyticalDashboardOutRelationshipsDatasets.from_dict(obj["datasets"]) if obj.get("datasets") is not None else None, - "labels": JsonApiAnalyticalDashboardOutRelationshipsLabels.from_dict(obj["labels"]) if obj.get("labels") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_with_links.py deleted file mode 100644 index 400da86f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_filter_context_in_attributes import JsonApiFilterContextInAttributes -from gooddata_api_client.models.json_api_filter_context_out_relationships import JsonApiFilterContextOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextOutWithLinks(BaseModel): - """ - JsonApiFilterContextOutWithLinks - """ # noqa: E501 - attributes: JsonApiFilterContextInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiFilterContextOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterContextInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiFilterContextOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch.py deleted file mode 100644 index e3d9ce6c2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_context_patch_attributes import JsonApiFilterContextPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextPatch(BaseModel): - """ - JSON:API representation of patching filterContext entity. - """ # noqa: E501 - attributes: JsonApiFilterContextPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterContextPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_attributes.py deleted file mode 100644 index 8e4143046..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_attributes.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextPatchAttributes(BaseModel): - """ - JsonApiFilterContextPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_document.py deleted file mode 100644 index 54ec96493..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_filter_context_patch import JsonApiFilterContextPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextPatchDocument(BaseModel): - """ - JsonApiFilterContextPatchDocument - """ # noqa: E501 - data: JsonApiFilterContextPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterContextPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id.py deleted file mode 100644 index 35180ac91..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_context_in_attributes import JsonApiFilterContextInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextPostOptionalId(BaseModel): - """ - JSON:API representation of filterContext entity. - """ # noqa: E501 - attributes: JsonApiFilterContextInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterContext']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterContext')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterContextInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id_document.py deleted file mode 100644 index 80770d264..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_context_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_filter_context_post_optional_id import JsonApiFilterContextPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterContextPostOptionalIdDocument(BaseModel): - """ - JsonApiFilterContextPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiFilterContextPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterContextPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterContextPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in.py deleted file mode 100644 index 792dd3752..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_view_in_attributes import JsonApiFilterViewInAttributes -from gooddata_api_client.models.json_api_filter_view_in_relationships import JsonApiFilterViewInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewIn(BaseModel): - """ - JSON:API representation of filterView entity. - """ # noqa: E501 - attributes: JsonApiFilterViewInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiFilterViewInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterViewInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiFilterViewInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_attributes.py deleted file mode 100644 index 9650bd9f2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_attributes.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewInAttributes(BaseModel): - """ - JsonApiFilterViewInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Dict[str, Any] = Field(description="The respective filter context.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_default: Optional[StrictBool] = Field(default=None, description="Indicator whether the filter view should by applied by default.", alias="isDefault") - tags: Optional[List[StrictStr]] = None - title: Annotated[str, Field(strict=True, max_length=255)] - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "isDefault", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "isDefault": obj.get("isDefault"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_document.py deleted file mode 100644 index 42bf249fd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_filter_view_in import JsonApiFilterViewIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewInDocument(BaseModel): - """ - JsonApiFilterViewInDocument - """ # noqa: E501 - data: JsonApiFilterViewIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterViewIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships.py deleted file mode 100644 index 4fde5d0c2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_filter_view_in_relationships_user import JsonApiFilterViewInRelationshipsUser -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewInRelationships(BaseModel): - """ - JsonApiFilterViewInRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - user: Optional[JsonApiFilterViewInRelationshipsUser] = None - __properties: ClassVar[List[str]] = ["analyticalDashboard", "user"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of user - if self.user: - _dict['user'] = self.user.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "user": JsonApiFilterViewInRelationshipsUser.from_dict(obj["user"]) if obj.get("user") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships_user.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships_user.py deleted file mode 100644 index dad6fca85..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_in_relationships_user.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_to_one_linkage import JsonApiUserToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewInRelationshipsUser(BaseModel): - """ - JsonApiFilterViewInRelationshipsUser - """ # noqa: E501 - data: Optional[JsonApiUserToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInRelationshipsUser from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewInRelationshipsUser from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out.py deleted file mode 100644 index 1a8fd8b6b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_view_in_attributes import JsonApiFilterViewInAttributes -from gooddata_api_client.models.json_api_filter_view_in_relationships import JsonApiFilterViewInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewOut(BaseModel): - """ - JSON:API representation of filterView entity. - """ # noqa: E501 - attributes: JsonApiFilterViewInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiFilterViewInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterViewInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiFilterViewInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_document.py deleted file mode 100644 index efaa4630a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_filter_view_out import JsonApiFilterViewOut -from gooddata_api_client.models.json_api_filter_view_out_includes import JsonApiFilterViewOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewOutDocument(BaseModel): - """ - JsonApiFilterViewOutDocument - """ # noqa: E501 - data: JsonApiFilterViewOut - included: Optional[List[JsonApiFilterViewOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterViewOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiFilterViewOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_includes.py deleted file mode 100644 index 6b4d680ba..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_includes.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.json_api_user_out_with_links import JsonApiUserOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIFILTERVIEWOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardOutWithLinks", "JsonApiUserOutWithLinks"] - -class JsonApiFilterViewOutIncludes(BaseModel): - """ - JsonApiFilterViewOutIncludes - """ - # data type: JsonApiAnalyticalDashboardOutWithLinks - oneof_schema_1_validator: Optional[JsonApiAnalyticalDashboardOutWithLinks] = None - # data type: JsonApiUserOutWithLinks - oneof_schema_2_validator: Optional[JsonApiUserOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardOutWithLinks, JsonApiUserOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardOutWithLinks", "JsonApiUserOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiFilterViewOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiAnalyticalDashboardOutWithLinks - if not isinstance(v, JsonApiAnalyticalDashboardOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserOutWithLinks - if not isinstance(v, JsonApiUserOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiFilterViewOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiAnalyticalDashboardOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiFilterViewOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardOutWithLinks, JsonApiUserOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_list.py deleted file mode 100644 index 0a6eb280c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_filter_view_out_includes import JsonApiFilterViewOutIncludes -from gooddata_api_client.models.json_api_filter_view_out_with_links import JsonApiFilterViewOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiFilterViewOutWithLinks] - included: Optional[List[JsonApiFilterViewOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiFilterViewOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiFilterViewOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_with_links.py deleted file mode 100644 index c1ac89bbf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_view_in_attributes import JsonApiFilterViewInAttributes -from gooddata_api_client.models.json_api_filter_view_in_relationships import JsonApiFilterViewInRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewOutWithLinks(BaseModel): - """ - JsonApiFilterViewOutWithLinks - """ # noqa: E501 - attributes: JsonApiFilterViewInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiFilterViewInRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterViewInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiFilterViewInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch.py deleted file mode 100644 index 189480353..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_filter_view_in_relationships import JsonApiFilterViewInRelationships -from gooddata_api_client.models.json_api_filter_view_patch_attributes import JsonApiFilterViewPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewPatch(BaseModel): - """ - JSON:API representation of patching filterView entity. - """ # noqa: E501 - attributes: JsonApiFilterViewPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiFilterViewInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['filterView']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('filterView')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiFilterViewPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiFilterViewInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_attributes.py deleted file mode 100644 index f26e0598c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_attributes.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewPatchAttributes(BaseModel): - """ - JsonApiFilterViewPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="The respective filter context.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_default: Optional[StrictBool] = Field(default=None, description="Indicator whether the filter view should by applied by default.", alias="isDefault") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "isDefault", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "isDefault": obj.get("isDefault"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_document.py deleted file mode 100644 index 2785def14..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_filter_view_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_filter_view_patch import JsonApiFilterViewPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiFilterViewPatchDocument(BaseModel): - """ - JsonApiFilterViewPatchDocument - """ # noqa: E501 - data: JsonApiFilterViewPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiFilterViewPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiFilterViewPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiFilterViewPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in.py deleted file mode 100644 index 89d40ba55..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_identity_provider_in_attributes import JsonApiIdentityProviderInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderIn(BaseModel): - """ - JSON:API representation of identityProvider entity. - """ # noqa: E501 - attributes: Optional[JsonApiIdentityProviderInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['identityProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('identityProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiIdentityProviderInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_attributes.py deleted file mode 100644 index a73496fca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_attributes.py +++ /dev/null @@ -1,125 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderInAttributes(BaseModel): - """ - JsonApiIdentityProviderInAttributes - """ # noqa: E501 - custom_claim_mapping: Optional[Dict[str, StrictStr]] = Field(default=None, description="Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute.", alias="customClaimMapping") - identifiers: Optional[List[StrictStr]] = Field(default=None, description="List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.") - idp_type: Optional[StrictStr] = Field(default=None, description="Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", alias="idpType") - oauth_client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthClientId") - oauth_client_secret: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The OAuth client secret of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthClientSecret") - oauth_custom_auth_attributes: Optional[Dict[str, StrictStr]] = Field(default=None, description="Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute.", alias="oauthCustomAuthAttributes") - oauth_custom_scopes: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", alias="oauthCustomScopes") - oauth_issuer_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", alias="oauthIssuerId") - oauth_issuer_location: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The location of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthIssuerLocation") - oauth_subject_id_claim: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", alias="oauthSubjectIdClaim") - saml_metadata: Optional[Annotated[str, Field(strict=True, max_length=15000)]] = Field(default=None, description="Base64 encoded xml document with SAML metadata. This document is issued by your SAML provider. It includes the issuer's name, expiration information, and keys that can be used to validate the response from the identity provider. This field is mandatory for SAML IdP.", alias="samlMetadata") - __properties: ClassVar[List[str]] = ["customClaimMapping", "identifiers", "idpType", "oauthClientId", "oauthClientSecret", "oauthCustomAuthAttributes", "oauthCustomScopes", "oauthIssuerId", "oauthIssuerLocation", "oauthSubjectIdClaim", "samlMetadata"] - - @field_validator('idp_type') - def idp_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MANAGED_IDP', 'FIM_IDP', 'DEX_IDP', 'CUSTOM_IDP']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGED_IDP', 'FIM_IDP', 'DEX_IDP', 'CUSTOM_IDP')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if oauth_custom_scopes (nullable) is None - # and model_fields_set contains the field - if self.oauth_custom_scopes is None and "oauth_custom_scopes" in self.model_fields_set: - _dict['oauthCustomScopes'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customClaimMapping": obj.get("customClaimMapping"), - "identifiers": obj.get("identifiers"), - "idpType": obj.get("idpType"), - "oauthClientId": obj.get("oauthClientId"), - "oauthClientSecret": obj.get("oauthClientSecret"), - "oauthCustomAuthAttributes": obj.get("oauthCustomAuthAttributes"), - "oauthCustomScopes": obj.get("oauthCustomScopes"), - "oauthIssuerId": obj.get("oauthIssuerId"), - "oauthIssuerLocation": obj.get("oauthIssuerLocation"), - "oauthSubjectIdClaim": obj.get("oauthSubjectIdClaim"), - "samlMetadata": obj.get("samlMetadata") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_document.py deleted file mode 100644 index 594a7205a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_identity_provider_in import JsonApiIdentityProviderIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderInDocument(BaseModel): - """ - JsonApiIdentityProviderInDocument - """ # noqa: E501 - data: JsonApiIdentityProviderIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiIdentityProviderIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_linkage.py deleted file mode 100644 index ad29f243c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['identityProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('identityProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out.py deleted file mode 100644 index c071fd2b1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_identity_provider_out_attributes import JsonApiIdentityProviderOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderOut(BaseModel): - """ - JSON:API representation of identityProvider entity. - """ # noqa: E501 - attributes: Optional[JsonApiIdentityProviderOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['identityProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('identityProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiIdentityProviderOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_attributes.py deleted file mode 100644 index 2312f43bc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_attributes.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderOutAttributes(BaseModel): - """ - JsonApiIdentityProviderOutAttributes - """ # noqa: E501 - custom_claim_mapping: Optional[Dict[str, StrictStr]] = Field(default=None, description="Map of custom claim overrides. To be used when your Idp does not provide default claims (sub, email, name, given_name, family_name). Define the key pair for the claim you wish to override, where the key is the default name of the attribute and the value is your custom name for the given attribute.", alias="customClaimMapping") - identifiers: Optional[List[StrictStr]] = Field(default=None, description="List of identifiers for this IdP, where an identifier is a domain name. Users with email addresses belonging to these domains will be authenticated by this IdP.") - idp_type: Optional[StrictStr] = Field(default=None, description="Type of IdP for management purposes. MANAGED_IDP represents a GoodData managed IdP used in single OIDC setup, which is protected from altering/deletion. FIM_IDP represents a GoodData managed IdP used in federated identity management setup, which is protected from altering/deletion. DEX_IDP represents internal Dex IdP which is protected from altering/deletion. CUSTOM_IDP represents customer's own IdP, protected from deletion if currently used by org for authentication, deletable otherwise.", alias="idpType") - oauth_client_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The OAuth client id of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthClientId") - oauth_custom_auth_attributes: Optional[Dict[str, StrictStr]] = Field(default=None, description="Map of additional authentication attributes that should be added to the OAuth2 authentication requests, where the key is the name of the attribute and the value is the value of the attribute.", alias="oauthCustomAuthAttributes") - oauth_custom_scopes: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="List of additional OAuth scopes which may be required by other providers (e.g. Snowflake)", alias="oauthCustomScopes") - oauth_issuer_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Any string identifying the OIDC provider. This value is used as suffix for OAuth2 callback (redirect) URL. If not defined, the standard callback URL is used. This value is valid only for external OIDC providers, not for the internal DEX provider.", alias="oauthIssuerId") - oauth_issuer_location: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The location of your OIDC provider. This field is mandatory for OIDC IdP.", alias="oauthIssuerLocation") - oauth_subject_id_claim: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Any string identifying the claim in ID token, that should be used for user identification. The default value is 'sub'.", alias="oauthSubjectIdClaim") - __properties: ClassVar[List[str]] = ["customClaimMapping", "identifiers", "idpType", "oauthClientId", "oauthCustomAuthAttributes", "oauthCustomScopes", "oauthIssuerId", "oauthIssuerLocation", "oauthSubjectIdClaim"] - - @field_validator('idp_type') - def idp_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MANAGED_IDP', 'FIM_IDP', 'DEX_IDP', 'CUSTOM_IDP']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MANAGED_IDP', 'FIM_IDP', 'DEX_IDP', 'CUSTOM_IDP')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if oauth_custom_scopes (nullable) is None - # and model_fields_set contains the field - if self.oauth_custom_scopes is None and "oauth_custom_scopes" in self.model_fields_set: - _dict['oauthCustomScopes'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customClaimMapping": obj.get("customClaimMapping"), - "identifiers": obj.get("identifiers"), - "idpType": obj.get("idpType"), - "oauthClientId": obj.get("oauthClientId"), - "oauthCustomAuthAttributes": obj.get("oauthCustomAuthAttributes"), - "oauthCustomScopes": obj.get("oauthCustomScopes"), - "oauthIssuerId": obj.get("oauthIssuerId"), - "oauthIssuerLocation": obj.get("oauthIssuerLocation"), - "oauthSubjectIdClaim": obj.get("oauthSubjectIdClaim") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_document.py deleted file mode 100644 index 81ac56560..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_identity_provider_out import JsonApiIdentityProviderOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderOutDocument(BaseModel): - """ - JsonApiIdentityProviderOutDocument - """ # noqa: E501 - data: JsonApiIdentityProviderOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiIdentityProviderOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_list.py deleted file mode 100644 index 5f63dabcc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_identity_provider_out_with_links import JsonApiIdentityProviderOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiIdentityProviderOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiIdentityProviderOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_with_links.py deleted file mode 100644 index ce513108a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_identity_provider_out_attributes import JsonApiIdentityProviderOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderOutWithLinks(BaseModel): - """ - JsonApiIdentityProviderOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiIdentityProviderOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['identityProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('identityProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiIdentityProviderOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch.py deleted file mode 100644 index f309e4b90..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_identity_provider_in_attributes import JsonApiIdentityProviderInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderPatch(BaseModel): - """ - JSON:API representation of patching identityProvider entity. - """ # noqa: E501 - attributes: Optional[JsonApiIdentityProviderInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['identityProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('identityProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiIdentityProviderInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch_document.py deleted file mode 100644 index dac025aa2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_identity_provider_patch import JsonApiIdentityProviderPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiIdentityProviderPatchDocument(BaseModel): - """ - JsonApiIdentityProviderPatchDocument - """ # noqa: E501 - data: JsonApiIdentityProviderPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiIdentityProviderPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiIdentityProviderPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_to_one_linkage.py deleted file mode 100644 index eb9007253..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_identity_provider_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_identity_provider_linkage import JsonApiIdentityProviderLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIIDENTITYPROVIDERTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiIdentityProviderLinkage"] - -class JsonApiIdentityProviderToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiIdentityProviderLinkage - oneof_schema_1_validator: Optional[JsonApiIdentityProviderLinkage] = None - actual_instance: Optional[Union[JsonApiIdentityProviderLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiIdentityProviderLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiIdentityProviderToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiIdentityProviderLinkage - if not isinstance(v, JsonApiIdentityProviderLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiIdentityProviderLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiIdentityProviderToOneLinkage with oneOf schemas: JsonApiIdentityProviderLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiIdentityProviderLinkage - try: - if match == 0: - instance.actual_instance = JsonApiIdentityProviderLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiIdentityProviderToOneLinkage with oneOf schemas: JsonApiIdentityProviderLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiIdentityProviderLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in.py deleted file mode 100644 index 3ab170673..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_jwk_in_attributes import JsonApiJwkInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkIn(BaseModel): - """ - JSON:API representation of jwk entity. - """ # noqa: E501 - attributes: Optional[JsonApiJwkInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['jwk']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('jwk')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiJwkInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes.py deleted file mode 100644 index c3a3db7f0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_jwk_in_attributes_content import JsonApiJwkInAttributesContent -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkInAttributes(BaseModel): - """ - JsonApiJwkInAttributes - """ # noqa: E501 - content: Optional[JsonApiJwkInAttributesContent] = None - __properties: ClassVar[List[str]] = ["content"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content - if self.content: - _dict['content'] = self.content.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": JsonApiJwkInAttributesContent.from_dict(obj["content"]) if obj.get("content") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes_content.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes_content.py deleted file mode 100644 index 5ac3caa94..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_attributes_content.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.rsa_specification import RsaSpecification -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIJWKINATTRIBUTESCONTENT_ONE_OF_SCHEMAS = ["RsaSpecification"] - -class JsonApiJwkInAttributesContent(BaseModel): - """ - Specification of the cryptographic key - """ - # data type: RsaSpecification - oneof_schema_1_validator: Optional[RsaSpecification] = None - actual_instance: Optional[Union[RsaSpecification]] = None - one_of_schemas: Set[str] = { "RsaSpecification" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiJwkInAttributesContent.model_construct() - error_messages = [] - match = 0 - # validate data type: RsaSpecification - if not isinstance(v, RsaSpecification): - error_messages.append(f"Error! Input type `{type(v)}` is not `RsaSpecification`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiJwkInAttributesContent with oneOf schemas: RsaSpecification. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into RsaSpecification - try: - if match == 0: - instance.actual_instance = RsaSpecification.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiJwkInAttributesContent with oneOf schemas: RsaSpecification. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], RsaSpecification]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_document.py deleted file mode 100644 index 9f38ed32b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_jwk_in import JsonApiJwkIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkInDocument(BaseModel): - """ - JsonApiJwkInDocument - """ # noqa: E501 - data: JsonApiJwkIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiJwkIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out.py deleted file mode 100644 index 1811f7c57..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_jwk_in_attributes import JsonApiJwkInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkOut(BaseModel): - """ - JSON:API representation of jwk entity. - """ # noqa: E501 - attributes: Optional[JsonApiJwkInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['jwk']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('jwk')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiJwkInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_document.py deleted file mode 100644 index e7a5ce469..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_jwk_out import JsonApiJwkOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkOutDocument(BaseModel): - """ - JsonApiJwkOutDocument - """ # noqa: E501 - data: JsonApiJwkOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiJwkOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_list.py deleted file mode 100644 index 83c4c0d8b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_jwk_out_with_links import JsonApiJwkOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiJwkOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiJwkOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_with_links.py deleted file mode 100644 index 78dd810d2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_jwk_in_attributes import JsonApiJwkInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkOutWithLinks(BaseModel): - """ - JsonApiJwkOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiJwkInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['jwk']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('jwk')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiJwkInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch.py deleted file mode 100644 index 520c55473..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_jwk_in_attributes import JsonApiJwkInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkPatch(BaseModel): - """ - JSON:API representation of patching jwk entity. - """ # noqa: E501 - attributes: Optional[JsonApiJwkInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['jwk']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('jwk')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiJwkInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch_document.py deleted file mode 100644 index 4216d7685..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_jwk_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_jwk_patch import JsonApiJwkPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiJwkPatchDocument(BaseModel): - """ - JsonApiJwkPatchDocument - """ # noqa: E501 - data: JsonApiJwkPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiJwkPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiJwkPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiJwkPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in.py deleted file mode 100644 index cd8ea7e46..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_knowledge_recommendation_in_attributes import JsonApiKnowledgeRecommendationInAttributes -from gooddata_api_client.models.json_api_knowledge_recommendation_in_relationships import JsonApiKnowledgeRecommendationInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationIn(BaseModel): - """ - JSON:API representation of knowledgeRecommendation entity. - """ # noqa: E501 - attributes: JsonApiKnowledgeRecommendationInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: JsonApiKnowledgeRecommendationInRelationships - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['knowledgeRecommendation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('knowledgeRecommendation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiKnowledgeRecommendationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiKnowledgeRecommendationInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_attributes.py deleted file mode 100644 index 9dfc36239..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_attributes.py +++ /dev/null @@ -1,152 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationInAttributes(BaseModel): - """ - JsonApiKnowledgeRecommendationInAttributes - """ # noqa: E501 - analytical_dashboard_title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title of the analytical dashboard (denormalized for display)", alias="analyticalDashboardTitle") - analyzed_period: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Analyzed time period (e.g., '2023-07' or 'July 2023')", alias="analyzedPeriod") - analyzed_value: Optional[Any] = Field(default=None, description="Metric value in the analyzed period (the observed value that triggered the anomaly)", alias="analyzedValue") - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - comparison_type: StrictStr = Field(description="Time period for comparison", alias="comparisonType") - confidence: Optional[Any] = Field(default=None, description="Confidence score (0.0 to 1.0)") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of the recommendation") - direction: StrictStr = Field(description="Direction of the metric change") - metric_title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title of the metric (denormalized for display)", alias="metricTitle") - recommendations: Optional[Dict[str, Any]] = Field(default=None, description="Structured recommendations data as JSON") - reference_period: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", alias="referencePeriod") - reference_value: Optional[Any] = Field(default=None, description="Metric value in the reference period", alias="referenceValue") - source_count: Optional[StrictInt] = Field(default=None, description="Number of source documents used for generation", alias="sourceCount") - tags: Optional[List[StrictStr]] = None - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'") - widget_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="ID of the widget where the anomaly was detected", alias="widgetId") - widget_name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of the widget where the anomaly was detected", alias="widgetName") - __properties: ClassVar[List[str]] = ["analyticalDashboardTitle", "analyzedPeriod", "analyzedValue", "areRelationsValid", "comparisonType", "confidence", "description", "direction", "metricTitle", "recommendations", "referencePeriod", "referenceValue", "sourceCount", "tags", "title", "widgetId", "widgetName"] - - @field_validator('comparison_type') - def comparison_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INCREASED', 'DECREASED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCREASED', 'DECREASED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if analyzed_value (nullable) is None - # and model_fields_set contains the field - if self.analyzed_value is None and "analyzed_value" in self.model_fields_set: - _dict['analyzedValue'] = None - - # set to None if confidence (nullable) is None - # and model_fields_set contains the field - if self.confidence is None and "confidence" in self.model_fields_set: - _dict['confidence'] = None - - # set to None if reference_value (nullable) is None - # and model_fields_set contains the field - if self.reference_value is None and "reference_value" in self.model_fields_set: - _dict['referenceValue'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboardTitle": obj.get("analyticalDashboardTitle"), - "analyzedPeriod": obj.get("analyzedPeriod"), - "analyzedValue": obj.get("analyzedValue"), - "areRelationsValid": obj.get("areRelationsValid"), - "comparisonType": obj.get("comparisonType"), - "confidence": obj.get("confidence"), - "description": obj.get("description"), - "direction": obj.get("direction"), - "metricTitle": obj.get("metricTitle"), - "recommendations": obj.get("recommendations"), - "referencePeriod": obj.get("referencePeriod"), - "referenceValue": obj.get("referenceValue"), - "sourceCount": obj.get("sourceCount"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "widgetId": obj.get("widgetId"), - "widgetName": obj.get("widgetName") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_document.py deleted file mode 100644 index 6c4dca888..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_knowledge_recommendation_in import JsonApiKnowledgeRecommendationIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationInDocument(BaseModel): - """ - JsonApiKnowledgeRecommendationInDocument - """ # noqa: E501 - data: JsonApiKnowledgeRecommendationIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiKnowledgeRecommendationIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships.py deleted file mode 100644 index 99816bfde..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_knowledge_recommendation_in_relationships_metric import JsonApiKnowledgeRecommendationInRelationshipsMetric -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationInRelationships(BaseModel): - """ - JsonApiKnowledgeRecommendationInRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - metric: JsonApiKnowledgeRecommendationInRelationshipsMetric - __properties: ClassVar[List[str]] = ["analyticalDashboard", "metric"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of metric - if self.metric: - _dict['metric'] = self.metric.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "metric": JsonApiKnowledgeRecommendationInRelationshipsMetric.from_dict(obj["metric"]) if obj.get("metric") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships_metric.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships_metric.py deleted file mode 100644 index 600dbae46..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_in_relationships_metric.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_metric_to_one_linkage import JsonApiMetricToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationInRelationshipsMetric(BaseModel): - """ - JsonApiKnowledgeRecommendationInRelationshipsMetric - """ # noqa: E501 - data: Optional[JsonApiMetricToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInRelationshipsMetric from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationInRelationshipsMetric from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMetricToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out.py deleted file mode 100644 index fdc5fca92..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_knowledge_recommendation_out_attributes import JsonApiKnowledgeRecommendationOutAttributes -from gooddata_api_client.models.json_api_knowledge_recommendation_out_relationships import JsonApiKnowledgeRecommendationOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationOut(BaseModel): - """ - JSON:API representation of knowledgeRecommendation entity. - """ # noqa: E501 - attributes: JsonApiKnowledgeRecommendationOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiKnowledgeRecommendationOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['knowledgeRecommendation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('knowledgeRecommendation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiKnowledgeRecommendationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiKnowledgeRecommendationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_attributes.py deleted file mode 100644 index 3ec0b796d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_attributes.py +++ /dev/null @@ -1,155 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationOutAttributes(BaseModel): - """ - JsonApiKnowledgeRecommendationOutAttributes - """ # noqa: E501 - analytical_dashboard_title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title of the analytical dashboard (denormalized for display)", alias="analyticalDashboardTitle") - analyzed_period: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Analyzed time period (e.g., '2023-07' or 'July 2023')", alias="analyzedPeriod") - analyzed_value: Optional[Any] = Field(default=None, description="Metric value in the analyzed period (the observed value that triggered the anomaly)", alias="analyzedValue") - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - comparison_type: StrictStr = Field(description="Time period for comparison", alias="comparisonType") - confidence: Optional[Any] = Field(default=None, description="Confidence score (0.0 to 1.0)") - created_at: Optional[datetime] = Field(default=None, alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of the recommendation") - direction: StrictStr = Field(description="Direction of the metric change") - metric_title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title of the metric (denormalized for display)", alias="metricTitle") - recommendations: Optional[Dict[str, Any]] = Field(default=None, description="Structured recommendations data as JSON") - reference_period: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", alias="referencePeriod") - reference_value: Optional[Any] = Field(default=None, description="Metric value in the reference period", alias="referenceValue") - source_count: Optional[StrictInt] = Field(default=None, description="Number of source documents used for generation", alias="sourceCount") - tags: Optional[List[StrictStr]] = None - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'") - widget_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="ID of the widget where the anomaly was detected", alias="widgetId") - widget_name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of the widget where the anomaly was detected", alias="widgetName") - __properties: ClassVar[List[str]] = ["analyticalDashboardTitle", "analyzedPeriod", "analyzedValue", "areRelationsValid", "comparisonType", "confidence", "createdAt", "description", "direction", "metricTitle", "recommendations", "referencePeriod", "referenceValue", "sourceCount", "tags", "title", "widgetId", "widgetName"] - - @field_validator('comparison_type') - def comparison_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INCREASED', 'DECREASED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCREASED', 'DECREASED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if analyzed_value (nullable) is None - # and model_fields_set contains the field - if self.analyzed_value is None and "analyzed_value" in self.model_fields_set: - _dict['analyzedValue'] = None - - # set to None if confidence (nullable) is None - # and model_fields_set contains the field - if self.confidence is None and "confidence" in self.model_fields_set: - _dict['confidence'] = None - - # set to None if reference_value (nullable) is None - # and model_fields_set contains the field - if self.reference_value is None and "reference_value" in self.model_fields_set: - _dict['referenceValue'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboardTitle": obj.get("analyticalDashboardTitle"), - "analyzedPeriod": obj.get("analyzedPeriod"), - "analyzedValue": obj.get("analyzedValue"), - "areRelationsValid": obj.get("areRelationsValid"), - "comparisonType": obj.get("comparisonType"), - "confidence": obj.get("confidence"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "direction": obj.get("direction"), - "metricTitle": obj.get("metricTitle"), - "recommendations": obj.get("recommendations"), - "referencePeriod": obj.get("referencePeriod"), - "referenceValue": obj.get("referenceValue"), - "sourceCount": obj.get("sourceCount"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "widgetId": obj.get("widgetId"), - "widgetName": obj.get("widgetName") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_document.py deleted file mode 100644 index a055cdd27..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_knowledge_recommendation_out import JsonApiKnowledgeRecommendationOut -from gooddata_api_client.models.json_api_knowledge_recommendation_out_includes import JsonApiKnowledgeRecommendationOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationOutDocument(BaseModel): - """ - JsonApiKnowledgeRecommendationOutDocument - """ # noqa: E501 - data: JsonApiKnowledgeRecommendationOut - included: Optional[List[JsonApiKnowledgeRecommendationOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiKnowledgeRecommendationOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiKnowledgeRecommendationOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_includes.py deleted file mode 100644 index fbb25a7f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_includes.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.json_api_metric_out_with_links import JsonApiMetricOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIKNOWLEDGERECOMMENDATIONOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardOutWithLinks", "JsonApiMetricOutWithLinks"] - -class JsonApiKnowledgeRecommendationOutIncludes(BaseModel): - """ - JsonApiKnowledgeRecommendationOutIncludes - """ - # data type: JsonApiMetricOutWithLinks - oneof_schema_1_validator: Optional[JsonApiMetricOutWithLinks] = None - # data type: JsonApiAnalyticalDashboardOutWithLinks - oneof_schema_2_validator: Optional[JsonApiAnalyticalDashboardOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardOutWithLinks, JsonApiMetricOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardOutWithLinks", "JsonApiMetricOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiKnowledgeRecommendationOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiMetricOutWithLinks - if not isinstance(v, JsonApiMetricOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiMetricOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAnalyticalDashboardOutWithLinks - if not isinstance(v, JsonApiAnalyticalDashboardOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiKnowledgeRecommendationOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiMetricOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiMetricOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiMetricOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAnalyticalDashboardOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiKnowledgeRecommendationOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiMetricOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardOutWithLinks, JsonApiMetricOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_list.py deleted file mode 100644 index 74f500715..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_knowledge_recommendation_out_includes import JsonApiKnowledgeRecommendationOutIncludes -from gooddata_api_client.models.json_api_knowledge_recommendation_out_with_links import JsonApiKnowledgeRecommendationOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiKnowledgeRecommendationOutWithLinks] - included: Optional[List[JsonApiKnowledgeRecommendationOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiKnowledgeRecommendationOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiKnowledgeRecommendationOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_relationships.py deleted file mode 100644 index ef6ba26be..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_relationships.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_knowledge_recommendation_in_relationships_metric import JsonApiKnowledgeRecommendationInRelationshipsMetric -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationOutRelationships(BaseModel): - """ - JsonApiKnowledgeRecommendationOutRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - metric: Optional[JsonApiKnowledgeRecommendationInRelationshipsMetric] = None - __properties: ClassVar[List[str]] = ["analyticalDashboard", "metric"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of metric - if self.metric: - _dict['metric'] = self.metric.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "metric": JsonApiKnowledgeRecommendationInRelationshipsMetric.from_dict(obj["metric"]) if obj.get("metric") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_with_links.py deleted file mode 100644 index f9baf03bb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_knowledge_recommendation_out_attributes import JsonApiKnowledgeRecommendationOutAttributes -from gooddata_api_client.models.json_api_knowledge_recommendation_out_relationships import JsonApiKnowledgeRecommendationOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationOutWithLinks(BaseModel): - """ - JsonApiKnowledgeRecommendationOutWithLinks - """ # noqa: E501 - attributes: JsonApiKnowledgeRecommendationOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiKnowledgeRecommendationOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['knowledgeRecommendation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('knowledgeRecommendation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiKnowledgeRecommendationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiKnowledgeRecommendationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch.py deleted file mode 100644 index 2df461d3d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_knowledge_recommendation_out_relationships import JsonApiKnowledgeRecommendationOutRelationships -from gooddata_api_client.models.json_api_knowledge_recommendation_patch_attributes import JsonApiKnowledgeRecommendationPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationPatch(BaseModel): - """ - JSON:API representation of patching knowledgeRecommendation entity. - """ # noqa: E501 - attributes: JsonApiKnowledgeRecommendationPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: JsonApiKnowledgeRecommendationOutRelationships - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['knowledgeRecommendation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('knowledgeRecommendation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiKnowledgeRecommendationPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiKnowledgeRecommendationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_attributes.py deleted file mode 100644 index 37ca7e90c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_attributes.py +++ /dev/null @@ -1,158 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationPatchAttributes(BaseModel): - """ - JsonApiKnowledgeRecommendationPatchAttributes - """ # noqa: E501 - analytical_dashboard_title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title of the analytical dashboard (denormalized for display)", alias="analyticalDashboardTitle") - analyzed_period: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Analyzed time period (e.g., '2023-07' or 'July 2023')", alias="analyzedPeriod") - analyzed_value: Optional[Any] = Field(default=None, description="Metric value in the analyzed period (the observed value that triggered the anomaly)", alias="analyzedValue") - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - comparison_type: Optional[StrictStr] = Field(default=None, description="Time period for comparison", alias="comparisonType") - confidence: Optional[Any] = Field(default=None, description="Confidence score (0.0 to 1.0)") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of the recommendation") - direction: Optional[StrictStr] = Field(default=None, description="Direction of the metric change") - metric_title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title of the metric (denormalized for display)", alias="metricTitle") - recommendations: Optional[Dict[str, Any]] = Field(default=None, description="Structured recommendations data as JSON") - reference_period: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Reference time period for comparison (e.g., '2023-06' or 'Jun 2023')", alias="referencePeriod") - reference_value: Optional[Any] = Field(default=None, description="Metric value in the reference period", alias="referenceValue") - source_count: Optional[StrictInt] = Field(default=None, description="Number of source documents used for generation", alias="sourceCount") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Human-readable title for the recommendation, e.g. 'Revenue decreased vs last month'") - widget_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="ID of the widget where the anomaly was detected", alias="widgetId") - widget_name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Name of the widget where the anomaly was detected", alias="widgetName") - __properties: ClassVar[List[str]] = ["analyticalDashboardTitle", "analyzedPeriod", "analyzedValue", "areRelationsValid", "comparisonType", "confidence", "description", "direction", "metricTitle", "recommendations", "referencePeriod", "referenceValue", "sourceCount", "tags", "title", "widgetId", "widgetName"] - - @field_validator('comparison_type') - def comparison_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INCREASED', 'DECREASED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCREASED', 'DECREASED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if analyzed_value (nullable) is None - # and model_fields_set contains the field - if self.analyzed_value is None and "analyzed_value" in self.model_fields_set: - _dict['analyzedValue'] = None - - # set to None if confidence (nullable) is None - # and model_fields_set contains the field - if self.confidence is None and "confidence" in self.model_fields_set: - _dict['confidence'] = None - - # set to None if reference_value (nullable) is None - # and model_fields_set contains the field - if self.reference_value is None and "reference_value" in self.model_fields_set: - _dict['referenceValue'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboardTitle": obj.get("analyticalDashboardTitle"), - "analyzedPeriod": obj.get("analyzedPeriod"), - "analyzedValue": obj.get("analyzedValue"), - "areRelationsValid": obj.get("areRelationsValid"), - "comparisonType": obj.get("comparisonType"), - "confidence": obj.get("confidence"), - "description": obj.get("description"), - "direction": obj.get("direction"), - "metricTitle": obj.get("metricTitle"), - "recommendations": obj.get("recommendations"), - "referencePeriod": obj.get("referencePeriod"), - "referenceValue": obj.get("referenceValue"), - "sourceCount": obj.get("sourceCount"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "widgetId": obj.get("widgetId"), - "widgetName": obj.get("widgetName") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_document.py deleted file mode 100644 index ed20bcd8e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_knowledge_recommendation_patch import JsonApiKnowledgeRecommendationPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationPatchDocument(BaseModel): - """ - JsonApiKnowledgeRecommendationPatchDocument - """ # noqa: E501 - data: JsonApiKnowledgeRecommendationPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiKnowledgeRecommendationPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id.py deleted file mode 100644 index 4a753df3a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_knowledge_recommendation_in_attributes import JsonApiKnowledgeRecommendationInAttributes -from gooddata_api_client.models.json_api_knowledge_recommendation_in_relationships import JsonApiKnowledgeRecommendationInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationPostOptionalId(BaseModel): - """ - JSON:API representation of knowledgeRecommendation entity. - """ # noqa: E501 - attributes: JsonApiKnowledgeRecommendationInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - relationships: JsonApiKnowledgeRecommendationInRelationships - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['knowledgeRecommendation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('knowledgeRecommendation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiKnowledgeRecommendationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiKnowledgeRecommendationInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id_document.py deleted file mode 100644 index e75994d5c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_knowledge_recommendation_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_knowledge_recommendation_post_optional_id import JsonApiKnowledgeRecommendationPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiKnowledgeRecommendationPostOptionalIdDocument(BaseModel): - """ - JsonApiKnowledgeRecommendationPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiKnowledgeRecommendationPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiKnowledgeRecommendationPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiKnowledgeRecommendationPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_linkage.py deleted file mode 100644 index 98230ffb1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['label']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('label')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out.py deleted file mode 100644 index 92cfff30c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_label_out_attributes import JsonApiLabelOutAttributes -from gooddata_api_client.models.json_api_label_out_relationships import JsonApiLabelOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOut(BaseModel): - """ - JSON:API representation of label entity. - """ # noqa: E501 - attributes: Optional[JsonApiLabelOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiLabelOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['label']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('label')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLabelOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiLabelOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes.py deleted file mode 100644 index 68a0c61b3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes.py +++ /dev/null @@ -1,149 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_label_out_attributes_geo_area_config import JsonApiLabelOutAttributesGeoAreaConfig -from gooddata_api_client.models.json_api_label_out_attributes_translations_inner import JsonApiLabelOutAttributesTranslationsInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutAttributes(BaseModel): - """ - JsonApiLabelOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - geo_area_config: Optional[JsonApiLabelOutAttributesGeoAreaConfig] = Field(default=None, alias="geoAreaConfig") - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - is_nullable: Optional[StrictBool] = Field(default=None, alias="isNullable") - locale: Optional[StrictStr] = None - null_value: Optional[StrictStr] = Field(default=None, alias="nullValue") - primary: Optional[StrictBool] = None - source_column: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="sourceColumn") - source_column_data_type: Optional[StrictStr] = Field(default=None, alias="sourceColumnDataType") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - translations: Optional[List[JsonApiLabelOutAttributesTranslationsInner]] = None - value_type: Optional[StrictStr] = Field(default=None, alias="valueType") - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "geoAreaConfig", "isHidden", "isNullable", "locale", "nullValue", "primary", "sourceColumn", "sourceColumnDataType", "tags", "title", "translations", "valueType"] - - @field_validator('source_column_data_type') - def source_column_data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - @field_validator('value_type') - def value_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of geo_area_config - if self.geo_area_config: - _dict['geoAreaConfig'] = self.geo_area_config.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in translations (list) - _items = [] - if self.translations: - for _item_translations in self.translations: - if _item_translations: - _items.append(_item_translations.to_dict()) - _dict['translations'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "geoAreaConfig": JsonApiLabelOutAttributesGeoAreaConfig.from_dict(obj["geoAreaConfig"]) if obj.get("geoAreaConfig") is not None else None, - "isHidden": obj.get("isHidden"), - "isNullable": obj.get("isNullable"), - "locale": obj.get("locale"), - "nullValue": obj.get("nullValue"), - "primary": obj.get("primary"), - "sourceColumn": obj.get("sourceColumn"), - "sourceColumnDataType": obj.get("sourceColumnDataType"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "translations": [JsonApiLabelOutAttributesTranslationsInner.from_dict(_item) for _item in obj["translations"]] if obj.get("translations") is not None else None, - "valueType": obj.get("valueType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_geo_area_config.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_geo_area_config.py deleted file mode 100644 index 0ed675159..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_geo_area_config.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.geo_collection_identifier import GeoCollectionIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutAttributesGeoAreaConfig(BaseModel): - """ - Configuration specific to geo area labels. - """ # noqa: E501 - collection: GeoCollectionIdentifier - __properties: ClassVar[List[str]] = ["collection"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutAttributesGeoAreaConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of collection - if self.collection: - _dict['collection'] = self.collection.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutAttributesGeoAreaConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "collection": GeoCollectionIdentifier.from_dict(obj["collection"]) if obj.get("collection") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_translations_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_translations_inner.py deleted file mode 100644 index 2b43857a9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_attributes_translations_inner.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutAttributesTranslationsInner(BaseModel): - """ - JsonApiLabelOutAttributesTranslationsInner - """ # noqa: E501 - locale: StrictStr - source_column: StrictStr = Field(alias="sourceColumn") - __properties: ClassVar[List[str]] = ["locale", "sourceColumn"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutAttributesTranslationsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutAttributesTranslationsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "locale": obj.get("locale"), - "sourceColumn": obj.get("sourceColumn") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_document.py deleted file mode 100644 index c51d96919..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_label_out import JsonApiLabelOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutDocument(BaseModel): - """ - JsonApiLabelOutDocument - """ # noqa: E501 - data: JsonApiLabelOut - included: Optional[List[JsonApiAttributeOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLabelOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiAttributeOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_list.py deleted file mode 100644 index 4fb0cd674..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_label_out_with_links import JsonApiLabelOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiLabelOutWithLinks] - included: Optional[List[JsonApiAttributeOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiLabelOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiAttributeOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships.py deleted file mode 100644 index 710b50b64..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_label_out_relationships_attribute import JsonApiLabelOutRelationshipsAttribute -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutRelationships(BaseModel): - """ - JsonApiLabelOutRelationships - """ # noqa: E501 - attribute: Optional[JsonApiLabelOutRelationshipsAttribute] = None - __properties: ClassVar[List[str]] = ["attribute"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute - if self.attribute: - _dict['attribute'] = self.attribute.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": JsonApiLabelOutRelationshipsAttribute.from_dict(obj["attribute"]) if obj.get("attribute") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships_attribute.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships_attribute.py deleted file mode 100644 index 401494569..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_relationships_attribute.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_attribute_to_one_linkage import JsonApiAttributeToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutRelationshipsAttribute(BaseModel): - """ - JsonApiLabelOutRelationshipsAttribute - """ # noqa: E501 - data: Optional[JsonApiAttributeToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutRelationshipsAttribute from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutRelationshipsAttribute from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiAttributeToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_out_with_links.py deleted file mode 100644 index 31429d867..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_label_out_attributes import JsonApiLabelOutAttributes -from gooddata_api_client.models.json_api_label_out_relationships import JsonApiLabelOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelOutWithLinks(BaseModel): - """ - JsonApiLabelOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiLabelOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiLabelOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['label']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('label')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLabelOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiLabelOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_patch.py deleted file mode 100644 index 95f83fe63..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_attribute_patch_attributes import JsonApiAttributePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelPatch(BaseModel): - """ - JSON:API representation of patching label entity. - """ # noqa: E501 - attributes: Optional[JsonApiAttributePatchAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['label']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('label')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_patch_document.py deleted file mode 100644 index fa881da0a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_label_patch import JsonApiLabelPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLabelPatchDocument(BaseModel): - """ - JsonApiLabelPatchDocument - """ # noqa: E501 - data: JsonApiLabelPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLabelPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLabelPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLabelPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_label_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_label_to_one_linkage.py deleted file mode 100644 index 2492314b9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_label_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_label_linkage import JsonApiLabelLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPILABELTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiLabelLinkage"] - -class JsonApiLabelToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiLabelLinkage - oneof_schema_1_validator: Optional[JsonApiLabelLinkage] = None - actual_instance: Optional[Union[JsonApiLabelLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiLabelLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiLabelToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiLabelLinkage - if not isinstance(v, JsonApiLabelLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiLabelLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiLabelToOneLinkage with oneOf schemas: JsonApiLabelLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiLabelLinkage - try: - if match == 0: - instance.actual_instance = JsonApiLabelLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiLabelToOneLinkage with oneOf schemas: JsonApiLabelLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiLabelLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in.py deleted file mode 100644 index 800f9285b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_endpoint_in_attributes import JsonApiLlmEndpointInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointIn(BaseModel): - """ - JSON:API representation of llmEndpoint entity. - """ # noqa: E501 - attributes: JsonApiLlmEndpointInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmEndpoint']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmEndpoint')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmEndpointInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_attributes.py deleted file mode 100644 index 6f44a18cb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_attributes.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointInAttributes(BaseModel): - """ - JsonApiLlmEndpointInAttributes - """ # noqa: E501 - base_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom LLM endpoint.", alias="baseUrl") - llm_model: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="LLM Model. We provide a default model for each provider, but you can override it here.", alias="llmModel") - llm_organization: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Organization in LLM provider.", alias="llmOrganization") - provider: Optional[StrictStr] = Field(default=None, description="LLM Provider.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="User-facing title of the LLM Provider.") - token: Annotated[str, Field(strict=True, max_length=10000)] = Field(description="The token to use to connect to the LLM provider.") - __properties: ClassVar[List[str]] = ["baseUrl", "llmModel", "llmOrganization", "provider", "title", "token"] - - @field_validator('provider') - def provider_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['OPENAI', 'AZURE_OPENAI']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('OPENAI', 'AZURE_OPENAI')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if base_url (nullable) is None - # and model_fields_set contains the field - if self.base_url is None and "base_url" in self.model_fields_set: - _dict['baseUrl'] = None - - # set to None if llm_organization (nullable) is None - # and model_fields_set contains the field - if self.llm_organization is None and "llm_organization" in self.model_fields_set: - _dict['llmOrganization'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "baseUrl": obj.get("baseUrl"), - "llmModel": obj.get("llmModel"), - "llmOrganization": obj.get("llmOrganization"), - "provider": obj.get("provider"), - "title": obj.get("title"), - "token": obj.get("token") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_document.py deleted file mode 100644 index c6546a0ea..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_llm_endpoint_in import JsonApiLlmEndpointIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointInDocument(BaseModel): - """ - JsonApiLlmEndpointInDocument - """ # noqa: E501 - data: JsonApiLlmEndpointIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLlmEndpointIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out.py deleted file mode 100644 index 56f650c91..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_endpoint_out_attributes import JsonApiLlmEndpointOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointOut(BaseModel): - """ - JSON:API representation of llmEndpoint entity. - """ # noqa: E501 - attributes: JsonApiLlmEndpointOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmEndpoint']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmEndpoint')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmEndpointOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_attributes.py deleted file mode 100644 index a68a0918c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_attributes.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointOutAttributes(BaseModel): - """ - JsonApiLlmEndpointOutAttributes - """ # noqa: E501 - base_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom LLM endpoint.", alias="baseUrl") - llm_model: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="LLM Model. We provide a default model for each provider, but you can override it here.", alias="llmModel") - llm_organization: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Organization in LLM provider.", alias="llmOrganization") - provider: Optional[StrictStr] = Field(default=None, description="LLM Provider.") - title: Annotated[str, Field(strict=True, max_length=255)] = Field(description="User-facing title of the LLM Provider.") - __properties: ClassVar[List[str]] = ["baseUrl", "llmModel", "llmOrganization", "provider", "title"] - - @field_validator('provider') - def provider_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['OPENAI', 'AZURE_OPENAI']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('OPENAI', 'AZURE_OPENAI')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if base_url (nullable) is None - # and model_fields_set contains the field - if self.base_url is None and "base_url" in self.model_fields_set: - _dict['baseUrl'] = None - - # set to None if llm_organization (nullable) is None - # and model_fields_set contains the field - if self.llm_organization is None and "llm_organization" in self.model_fields_set: - _dict['llmOrganization'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "baseUrl": obj.get("baseUrl"), - "llmModel": obj.get("llmModel"), - "llmOrganization": obj.get("llmOrganization"), - "provider": obj.get("provider"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_document.py deleted file mode 100644 index 2e5373cea..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_llm_endpoint_out import JsonApiLlmEndpointOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointOutDocument(BaseModel): - """ - JsonApiLlmEndpointOutDocument - """ # noqa: E501 - data: JsonApiLlmEndpointOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLlmEndpointOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_list.py deleted file mode 100644 index 69c39274c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_llm_endpoint_out_with_links import JsonApiLlmEndpointOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiLlmEndpointOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiLlmEndpointOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_with_links.py deleted file mode 100644 index 8df3749bf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_endpoint_out_attributes import JsonApiLlmEndpointOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointOutWithLinks(BaseModel): - """ - JsonApiLlmEndpointOutWithLinks - """ # noqa: E501 - attributes: JsonApiLlmEndpointOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmEndpoint']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmEndpoint')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmEndpointOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch.py deleted file mode 100644 index 28548d437..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_endpoint_patch_attributes import JsonApiLlmEndpointPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointPatch(BaseModel): - """ - JSON:API representation of patching llmEndpoint entity. - """ # noqa: E501 - attributes: JsonApiLlmEndpointPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmEndpoint']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmEndpoint')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmEndpointPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_attributes.py deleted file mode 100644 index ee584a2ff..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_attributes.py +++ /dev/null @@ -1,120 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointPatchAttributes(BaseModel): - """ - JsonApiLlmEndpointPatchAttributes - """ # noqa: E501 - base_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom LLM endpoint.", alias="baseUrl") - llm_model: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="LLM Model. We provide a default model for each provider, but you can override it here.", alias="llmModel") - llm_organization: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Organization in LLM provider.", alias="llmOrganization") - provider: Optional[StrictStr] = Field(default=None, description="LLM Provider.") - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="User-facing title of the LLM Provider.") - token: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="The token to use to connect to the LLM provider.") - __properties: ClassVar[List[str]] = ["baseUrl", "llmModel", "llmOrganization", "provider", "title", "token"] - - @field_validator('provider') - def provider_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['OPENAI', 'AZURE_OPENAI']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('OPENAI', 'AZURE_OPENAI')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if base_url (nullable) is None - # and model_fields_set contains the field - if self.base_url is None and "base_url" in self.model_fields_set: - _dict['baseUrl'] = None - - # set to None if llm_organization (nullable) is None - # and model_fields_set contains the field - if self.llm_organization is None and "llm_organization" in self.model_fields_set: - _dict['llmOrganization'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "baseUrl": obj.get("baseUrl"), - "llmModel": obj.get("llmModel"), - "llmOrganization": obj.get("llmOrganization"), - "provider": obj.get("provider"), - "title": obj.get("title"), - "token": obj.get("token") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_document.py deleted file mode 100644 index 58c20ec9f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_endpoint_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_llm_endpoint_patch import JsonApiLlmEndpointPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmEndpointPatchDocument(BaseModel): - """ - JsonApiLlmEndpointPatchDocument - """ # noqa: E501 - data: JsonApiLlmEndpointPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmEndpointPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLlmEndpointPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in.py deleted file mode 100644 index fe155807d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_provider_in_attributes import JsonApiLlmProviderInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderIn(BaseModel): - """ - LLM Provider configuration for connecting to LLM services. - """ # noqa: E501 - attributes: JsonApiLlmProviderInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmProviderInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes.py deleted file mode 100644 index 64b1b4116..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes.py +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_provider_in_attributes_models_inner import JsonApiLlmProviderInAttributesModelsInner -from gooddata_api_client.models.json_api_llm_provider_in_attributes_provider_config import JsonApiLlmProviderInAttributesProviderConfig -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderInAttributes(BaseModel): - """ - JsonApiLlmProviderInAttributes - """ # noqa: E501 - default_model_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="ID of the default model to use from the models list.", alias="defaultModelId") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of the LLM Provider.") - models: Optional[List[JsonApiLlmProviderInAttributesModelsInner]] = Field(description="List of LLM models available for this provider.") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - provider_config: JsonApiLlmProviderInAttributesProviderConfig = Field(alias="providerConfig") - __properties: ClassVar[List[str]] = ["defaultModelId", "description", "models", "name", "providerConfig"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in models (list) - _items = [] - if self.models: - for _item_models in self.models: - if _item_models: - _items.append(_item_models.to_dict()) - _dict['models'] = _items - # override the default output from pydantic by calling `to_dict()` of provider_config - if self.provider_config: - _dict['providerConfig'] = self.provider_config.to_dict() - # set to None if default_model_id (nullable) is None - # and model_fields_set contains the field - if self.default_model_id is None and "default_model_id" in self.model_fields_set: - _dict['defaultModelId'] = None - - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if models (nullable) is None - # and model_fields_set contains the field - if self.models is None and "models" in self.model_fields_set: - _dict['models'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "defaultModelId": obj.get("defaultModelId"), - "description": obj.get("description"), - "models": [JsonApiLlmProviderInAttributesModelsInner.from_dict(_item) for _item in obj["models"]] if obj.get("models") is not None else None, - "name": obj.get("name"), - "providerConfig": JsonApiLlmProviderInAttributesProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_models_inner.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_models_inner.py deleted file mode 100644 index 12a13bc8b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_models_inner.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderInAttributesModelsInner(BaseModel): - """ - LLM Model configuration (id, family) within a provider. - """ # noqa: E501 - family: StrictStr = Field(description="Family of LLM models.") - id: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Unique identifier of the model (e.g., gpt-5.3, claude-4.6).") - __properties: ClassVar[List[str]] = ["family", "id"] - - @field_validator('family') - def family_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['OPENAI', 'ANTHROPIC', 'META', 'MISTRAL', 'AMAZON', 'GOOGLE', 'COHERE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('OPENAI', 'ANTHROPIC', 'META', 'MISTRAL', 'AMAZON', 'GOOGLE', 'COHERE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderInAttributesModelsInner from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderInAttributesModelsInner from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "family": obj.get("family"), - "id": obj.get("id") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_provider_config.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_provider_config.py deleted file mode 100644 index 922cabcfd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_attributes_provider_config.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.aws_bedrock_provider_config import AwsBedrockProviderConfig -from gooddata_api_client.models.azure_foundry_provider_config import AzureFoundryProviderConfig -from gooddata_api_client.models.open_ai_provider_config import OpenAIProviderConfig -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPILLMPROVIDERINATTRIBUTESPROVIDERCONFIG_ONE_OF_SCHEMAS = ["AwsBedrockProviderConfig", "AzureFoundryProviderConfig", "OpenAIProviderConfig"] - -class JsonApiLlmProviderInAttributesProviderConfig(BaseModel): - """ - Provider-specific configuration including authentication. - """ - # data type: AwsBedrockProviderConfig - oneof_schema_1_validator: Optional[AwsBedrockProviderConfig] = None - # data type: AzureFoundryProviderConfig - oneof_schema_2_validator: Optional[AzureFoundryProviderConfig] = None - # data type: OpenAIProviderConfig - oneof_schema_3_validator: Optional[OpenAIProviderConfig] = None - actual_instance: Optional[Union[AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig]] = None - one_of_schemas: Set[str] = { "AwsBedrockProviderConfig", "AzureFoundryProviderConfig", "OpenAIProviderConfig" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiLlmProviderInAttributesProviderConfig.model_construct() - error_messages = [] - match = 0 - # validate data type: AwsBedrockProviderConfig - if not isinstance(v, AwsBedrockProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `AwsBedrockProviderConfig`") - else: - match += 1 - # validate data type: AzureFoundryProviderConfig - if not isinstance(v, AzureFoundryProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `AzureFoundryProviderConfig`") - else: - match += 1 - # validate data type: OpenAIProviderConfig - if not isinstance(v, OpenAIProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `OpenAIProviderConfig`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiLlmProviderInAttributesProviderConfig with oneOf schemas: AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AwsBedrockProviderConfig - try: - if match == 0: - instance.actual_instance = AwsBedrockProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AzureFoundryProviderConfig - try: - if match == 0: - instance.actual_instance = AzureFoundryProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into OpenAIProviderConfig - try: - if match == 0: - instance.actual_instance = OpenAIProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiLlmProviderInAttributesProviderConfig with oneOf schemas: AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_document.py deleted file mode 100644 index 8f7620c4e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_llm_provider_in import JsonApiLlmProviderIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderInDocument(BaseModel): - """ - JsonApiLlmProviderInDocument - """ # noqa: E501 - data: JsonApiLlmProviderIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLlmProviderIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out.py deleted file mode 100644 index ba3cc4850..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_provider_in_attributes import JsonApiLlmProviderInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderOut(BaseModel): - """ - LLM Provider configuration for connecting to LLM services. - """ # noqa: E501 - attributes: JsonApiLlmProviderInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmProviderInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_document.py deleted file mode 100644 index 6ec30d2b5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_llm_provider_out import JsonApiLlmProviderOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderOutDocument(BaseModel): - """ - JsonApiLlmProviderOutDocument - """ # noqa: E501 - data: JsonApiLlmProviderOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLlmProviderOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_list.py deleted file mode 100644 index 20704acb7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_llm_provider_out_with_links import JsonApiLlmProviderOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiLlmProviderOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiLlmProviderOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_with_links.py deleted file mode 100644 index 9414da530..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_provider_in_attributes import JsonApiLlmProviderInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderOutWithLinks(BaseModel): - """ - JsonApiLlmProviderOutWithLinks - """ # noqa: E501 - attributes: JsonApiLlmProviderInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmProviderInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch.py deleted file mode 100644 index bd7452bfc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_provider_patch_attributes import JsonApiLlmProviderPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderPatch(BaseModel): - """ - LLM Provider configuration for connecting to LLM services. - """ # noqa: E501 - attributes: JsonApiLlmProviderPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['llmProvider']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('llmProvider')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiLlmProviderPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_attributes.py deleted file mode 100644 index a0cabc660..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_attributes.py +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_llm_provider_in_attributes_models_inner import JsonApiLlmProviderInAttributesModelsInner -from gooddata_api_client.models.json_api_llm_provider_in_attributes_provider_config import JsonApiLlmProviderInAttributesProviderConfig -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderPatchAttributes(BaseModel): - """ - JsonApiLlmProviderPatchAttributes - """ # noqa: E501 - default_model_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="ID of the default model to use from the models list.", alias="defaultModelId") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Description of the LLM Provider.") - models: Optional[List[JsonApiLlmProviderInAttributesModelsInner]] = Field(default=None, description="List of LLM models available for this provider.") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - provider_config: Optional[JsonApiLlmProviderInAttributesProviderConfig] = Field(default=None, alias="providerConfig") - __properties: ClassVar[List[str]] = ["defaultModelId", "description", "models", "name", "providerConfig"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in models (list) - _items = [] - if self.models: - for _item_models in self.models: - if _item_models: - _items.append(_item_models.to_dict()) - _dict['models'] = _items - # override the default output from pydantic by calling `to_dict()` of provider_config - if self.provider_config: - _dict['providerConfig'] = self.provider_config.to_dict() - # set to None if default_model_id (nullable) is None - # and model_fields_set contains the field - if self.default_model_id is None and "default_model_id" in self.model_fields_set: - _dict['defaultModelId'] = None - - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if models (nullable) is None - # and model_fields_set contains the field - if self.models is None and "models" in self.model_fields_set: - _dict['models'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "defaultModelId": obj.get("defaultModelId"), - "description": obj.get("description"), - "models": [JsonApiLlmProviderInAttributesModelsInner.from_dict(_item) for _item in obj["models"]] if obj.get("models") is not None else None, - "name": obj.get("name"), - "providerConfig": JsonApiLlmProviderInAttributesProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_document.py deleted file mode 100644 index fe228e3b4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_llm_provider_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_llm_provider_patch import JsonApiLlmProviderPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiLlmProviderPatchDocument(BaseModel): - """ - JsonApiLlmProviderPatchDocument - """ # noqa: E501 - data: JsonApiLlmProviderPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiLlmProviderPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiLlmProviderPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in.py deleted file mode 100644 index 3c8eb2d16..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_memory_item_in_attributes import JsonApiMemoryItemInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemIn(BaseModel): - """ - JSON:API representation of memoryItem entity. - """ # noqa: E501 - attributes: JsonApiMemoryItemInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['memoryItem']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('memoryItem')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMemoryItemInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_attributes.py deleted file mode 100644 index 3d54f470f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_attributes.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemInAttributes(BaseModel): - """ - JsonApiMemoryItemInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - instruction: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The text that will be injected into the system prompt") - is_disabled: Optional[StrictBool] = Field(default=None, description="Whether memory item is disabled", alias="isDisabled") - keywords: Optional[List[StrictStr]] = Field(default=None, description="Set of unique strings used for semantic similarity filtering") - strategy: StrictStr = Field(description="Strategy defining when the memory item should be applied") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "instruction", "isDisabled", "keywords", "strategy", "tags", "title"] - - @field_validator('strategy') - def strategy_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ALWAYS', 'AUTO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'AUTO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "instruction": obj.get("instruction"), - "isDisabled": obj.get("isDisabled"), - "keywords": obj.get("keywords"), - "strategy": obj.get("strategy"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_document.py deleted file mode 100644 index 2d49ad0eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_memory_item_in import JsonApiMemoryItemIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemInDocument(BaseModel): - """ - JsonApiMemoryItemInDocument - """ # noqa: E501 - data: JsonApiMemoryItemIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMemoryItemIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out.py deleted file mode 100644 index 2e1dcd121..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_dashboard_plugin_out_relationships import JsonApiDashboardPluginOutRelationships -from gooddata_api_client.models.json_api_memory_item_out_attributes import JsonApiMemoryItemOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemOut(BaseModel): - """ - JSON:API representation of memoryItem entity. - """ # noqa: E501 - attributes: JsonApiMemoryItemOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiDashboardPluginOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['memoryItem']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('memoryItem')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMemoryItemOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiDashboardPluginOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_attributes.py deleted file mode 100644 index 349e4f97c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_attributes.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemOutAttributes(BaseModel): - """ - JsonApiMemoryItemOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - instruction: Annotated[str, Field(strict=True, max_length=255)] = Field(description="The text that will be injected into the system prompt") - is_disabled: Optional[StrictBool] = Field(default=None, description="Whether memory item is disabled", alias="isDisabled") - keywords: Optional[List[StrictStr]] = Field(default=None, description="Set of unique strings used for semantic similarity filtering") - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - strategy: StrictStr = Field(description="Strategy defining when the memory item should be applied") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "createdAt", "description", "instruction", "isDisabled", "keywords", "modifiedAt", "strategy", "tags", "title"] - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('strategy') - def strategy_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ALWAYS', 'AUTO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'AUTO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "instruction": obj.get("instruction"), - "isDisabled": obj.get("isDisabled"), - "keywords": obj.get("keywords"), - "modifiedAt": obj.get("modifiedAt"), - "strategy": obj.get("strategy"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_document.py deleted file mode 100644 index 6e5021c6c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_memory_item_out import JsonApiMemoryItemOut -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemOutDocument(BaseModel): - """ - JsonApiMemoryItemOutDocument - """ # noqa: E501 - data: JsonApiMemoryItemOut - included: Optional[List[JsonApiUserIdentifierOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMemoryItemOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiUserIdentifierOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_list.py deleted file mode 100644 index e6aed2509..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_memory_item_out_with_links import JsonApiMemoryItemOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiMemoryItemOutWithLinks] - included: Optional[List[JsonApiUserIdentifierOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiMemoryItemOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiUserIdentifierOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_with_links.py deleted file mode 100644 index af76c4dcb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_dashboard_plugin_out_relationships import JsonApiDashboardPluginOutRelationships -from gooddata_api_client.models.json_api_memory_item_out_attributes import JsonApiMemoryItemOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemOutWithLinks(BaseModel): - """ - JsonApiMemoryItemOutWithLinks - """ # noqa: E501 - attributes: JsonApiMemoryItemOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiDashboardPluginOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['memoryItem']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('memoryItem')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMemoryItemOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiDashboardPluginOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch.py deleted file mode 100644 index be9e303e8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_memory_item_patch_attributes import JsonApiMemoryItemPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemPatch(BaseModel): - """ - JSON:API representation of patching memoryItem entity. - """ # noqa: E501 - attributes: JsonApiMemoryItemPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['memoryItem']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('memoryItem')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMemoryItemPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_attributes.py deleted file mode 100644 index 5152c68cb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_attributes.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemPatchAttributes(BaseModel): - """ - JsonApiMemoryItemPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - instruction: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The text that will be injected into the system prompt") - is_disabled: Optional[StrictBool] = Field(default=None, description="Whether memory item is disabled", alias="isDisabled") - keywords: Optional[List[StrictStr]] = Field(default=None, description="Set of unique strings used for semantic similarity filtering") - strategy: Optional[StrictStr] = Field(default=None, description="Strategy defining when the memory item should be applied") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "instruction", "isDisabled", "keywords", "strategy", "tags", "title"] - - @field_validator('strategy') - def strategy_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ALWAYS', 'AUTO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALWAYS', 'AUTO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "instruction": obj.get("instruction"), - "isDisabled": obj.get("isDisabled"), - "keywords": obj.get("keywords"), - "strategy": obj.get("strategy"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_document.py deleted file mode 100644 index a43f6c02a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_memory_item_patch import JsonApiMemoryItemPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemPatchDocument(BaseModel): - """ - JsonApiMemoryItemPatchDocument - """ # noqa: E501 - data: JsonApiMemoryItemPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMemoryItemPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id.py deleted file mode 100644 index 6ea01565b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_memory_item_in_attributes import JsonApiMemoryItemInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemPostOptionalId(BaseModel): - """ - JSON:API representation of memoryItem entity. - """ # noqa: E501 - attributes: JsonApiMemoryItemInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['memoryItem']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('memoryItem')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMemoryItemInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id_document.py deleted file mode 100644 index 1a95ecdbd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_memory_item_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_memory_item_post_optional_id import JsonApiMemoryItemPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMemoryItemPostOptionalIdDocument(BaseModel): - """ - JsonApiMemoryItemPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiMemoryItemPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMemoryItemPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMemoryItemPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_in.py deleted file mode 100644 index 5b5c0e12b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_metric_in_attributes import JsonApiMetricInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricIn(BaseModel): - """ - JSON:API representation of metric entity. - """ # noqa: E501 - attributes: JsonApiMetricInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMetricInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes.py deleted file mode 100644 index 50ea8df69..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_metric_in_attributes_content import JsonApiMetricInAttributesContent -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricInAttributes(BaseModel): - """ - JsonApiMetricInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: JsonApiMetricInAttributesContent - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - is_hidden_from_kda: Optional[StrictBool] = Field(default=None, alias="isHiddenFromKda") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "isHidden", "isHiddenFromKda", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content - if self.content: - _dict['content'] = self.content.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": JsonApiMetricInAttributesContent.from_dict(obj["content"]) if obj.get("content") is not None else None, - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "isHiddenFromKda": obj.get("isHiddenFromKda"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes_content.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes_content.py deleted file mode 100644 index 55129efa9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_attributes_content.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricInAttributesContent(BaseModel): - """ - JsonApiMetricInAttributesContent - """ # noqa: E501 - format: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field(default=None, description="Excel-like format string with optional dynamic tokens. Filter value tokens: [$FILTER:] for raw filter value passthrough. Currency tokens: [$CURRENCY:] for currency symbol, with optional forms :symbol, :narrow, :code, :name. Locale abbreviations: [$K], [$M], [$B], [$T] for locale-specific scale abbreviations. Tokens are resolved at execution time based on AFM filters and user's format locale. Single-value filters only; multi-value filters use fallback values.") - maql: Annotated[str, Field(strict=True, max_length=10000)] - metric_type: Optional[StrictStr] = Field(default=None, description="Categorizes metric semantics (e.g., currency).", alias="metricType") - __properties: ClassVar[List[str]] = ["format", "maql", "metricType"] - - @field_validator('metric_type') - def metric_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['UNSPECIFIED', 'CURRENCY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('UNSPECIFIED', 'CURRENCY')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricInAttributesContent from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if format (nullable) is None - # and model_fields_set contains the field - if self.format is None and "format" in self.model_fields_set: - _dict['format'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricInAttributesContent from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "format": obj.get("format"), - "maql": obj.get("maql"), - "metricType": obj.get("metricType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_document.py deleted file mode 100644 index 68ecae083..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_metric_in import JsonApiMetricIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricInDocument(BaseModel): - """ - JsonApiMetricInDocument - """ # noqa: E501 - data: JsonApiMetricIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMetricIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_linkage.py deleted file mode 100644 index a50351c23..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out.py deleted file mode 100644 index d092fcf92..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_metric_out_attributes import JsonApiMetricOutAttributes -from gooddata_api_client.models.json_api_metric_out_relationships import JsonApiMetricOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricOut(BaseModel): - """ - JSON:API representation of metric entity. - """ # noqa: E501 - attributes: JsonApiMetricOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiMetricOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMetricOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiMetricOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_attributes.py deleted file mode 100644 index a8b2ffe36..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_attributes.py +++ /dev/null @@ -1,183 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_metric_in_attributes_content import JsonApiMetricInAttributesContent -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricOutAttributes(BaseModel): - """ - JsonApiMetricOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - certification: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - certification_message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.", alias="certificationMessage") - certified_at: Optional[datetime] = Field(default=None, description="Time when the certification was set.", alias="certifiedAt") - content: JsonApiMetricInAttributesContent - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - is_hidden_from_kda: Optional[StrictBool] = Field(default=None, alias="isHiddenFromKda") - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "certification", "certificationMessage", "certifiedAt", "content", "createdAt", "description", "isHidden", "isHiddenFromKda", "modifiedAt", "tags", "title"] - - @field_validator('certification') - def certification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('certified_at') - def certified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content - if self.content: - _dict['content'] = self.content.to_dict() - # set to None if certification_message (nullable) is None - # and model_fields_set contains the field - if self.certification_message is None and "certification_message" in self.model_fields_set: - _dict['certificationMessage'] = None - - # set to None if certified_at (nullable) is None - # and model_fields_set contains the field - if self.certified_at is None and "certified_at" in self.model_fields_set: - _dict['certifiedAt'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "certification": obj.get("certification"), - "certificationMessage": obj.get("certificationMessage"), - "certifiedAt": obj.get("certifiedAt"), - "content": JsonApiMetricInAttributesContent.from_dict(obj["content"]) if obj.get("content") is not None else None, - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "isHiddenFromKda": obj.get("isHiddenFromKda"), - "modifiedAt": obj.get("modifiedAt"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_document.py deleted file mode 100644 index f88a2d8da..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_metric_out import JsonApiMetricOut -from gooddata_api_client.models.json_api_metric_out_includes import JsonApiMetricOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricOutDocument(BaseModel): - """ - JsonApiMetricOutDocument - """ # noqa: E501 - data: JsonApiMetricOut - included: Optional[List[JsonApiMetricOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMetricOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiMetricOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_includes.py deleted file mode 100644 index c9de86a65..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_includes.py +++ /dev/null @@ -1,201 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_fact_out_with_links import JsonApiFactOutWithLinks -from gooddata_api_client.models.json_api_label_out_with_links import JsonApiLabelOutWithLinks -from gooddata_api_client.models.json_api_metric_out_with_links import JsonApiMetricOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIMETRICOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks", "JsonApiLabelOutWithLinks", "JsonApiMetricOutWithLinks", "JsonApiUserIdentifierOutWithLinks"] - -class JsonApiMetricOutIncludes(BaseModel): - """ - JsonApiMetricOutIncludes - """ - # data type: JsonApiUserIdentifierOutWithLinks - oneof_schema_1_validator: Optional[JsonApiUserIdentifierOutWithLinks] = None - # data type: JsonApiFactOutWithLinks - oneof_schema_2_validator: Optional[JsonApiFactOutWithLinks] = None - # data type: JsonApiAttributeOutWithLinks - oneof_schema_3_validator: Optional[JsonApiAttributeOutWithLinks] = None - # data type: JsonApiLabelOutWithLinks - oneof_schema_4_validator: Optional[JsonApiLabelOutWithLinks] = None - # data type: JsonApiMetricOutWithLinks - oneof_schema_5_validator: Optional[JsonApiMetricOutWithLinks] = None - # data type: JsonApiDatasetOutWithLinks - oneof_schema_6_validator: Optional[JsonApiDatasetOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks", "JsonApiLabelOutWithLinks", "JsonApiMetricOutWithLinks", "JsonApiUserIdentifierOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiMetricOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserIdentifierOutWithLinks - if not isinstance(v, JsonApiUserIdentifierOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiFactOutWithLinks - if not isinstance(v, JsonApiFactOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiFactOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAttributeOutWithLinks - if not isinstance(v, JsonApiAttributeOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiLabelOutWithLinks - if not isinstance(v, JsonApiLabelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiLabelOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiMetricOutWithLinks - if not isinstance(v, JsonApiMetricOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiMetricOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiMetricOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserIdentifierOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiFactOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiFactOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAttributeOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAttributeOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiLabelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiLabelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiMetricOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiMetricOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiMetricOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserIdentifierOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_list.py deleted file mode 100644 index a70b6a8db..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_metric_out_includes import JsonApiMetricOutIncludes -from gooddata_api_client.models.json_api_metric_out_with_links import JsonApiMetricOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiMetricOutWithLinks] - included: Optional[List[JsonApiMetricOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiMetricOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiMetricOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_relationships.py deleted file mode 100644 index 9f2fa0ee0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_relationships.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_datasets import JsonApiAnalyticalDashboardOutRelationshipsDatasets -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_labels import JsonApiAnalyticalDashboardOutRelationshipsLabels -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_metrics import JsonApiAnalyticalDashboardOutRelationshipsMetrics -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships_attributes import JsonApiAttributeHierarchyOutRelationshipsAttributes -from gooddata_api_client.models.json_api_dataset_out_relationships_facts import JsonApiDatasetOutRelationshipsFacts -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricOutRelationships(BaseModel): - """ - JsonApiMetricOutRelationships - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyOutRelationshipsAttributes] = None - certified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="certifiedBy") - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - datasets: Optional[JsonApiAnalyticalDashboardOutRelationshipsDatasets] = None - facts: Optional[JsonApiDatasetOutRelationshipsFacts] = None - labels: Optional[JsonApiAnalyticalDashboardOutRelationshipsLabels] = None - metrics: Optional[JsonApiAnalyticalDashboardOutRelationshipsMetrics] = None - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - __properties: ClassVar[List[str]] = ["attributes", "certifiedBy", "createdBy", "datasets", "facts", "labels", "metrics", "modifiedBy"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of certified_by - if self.certified_by: - _dict['certifiedBy'] = self.certified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of datasets - if self.datasets: - _dict['datasets'] = self.datasets.to_dict() - # override the default output from pydantic by calling `to_dict()` of facts - if self.facts: - _dict['facts'] = self.facts.to_dict() - # override the default output from pydantic by calling `to_dict()` of labels - if self.labels: - _dict['labels'] = self.labels.to_dict() - # override the default output from pydantic by calling `to_dict()` of metrics - if self.metrics: - _dict['metrics'] = self.metrics.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyOutRelationshipsAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "certifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["certifiedBy"]) if obj.get("certifiedBy") is not None else None, - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "datasets": JsonApiAnalyticalDashboardOutRelationshipsDatasets.from_dict(obj["datasets"]) if obj.get("datasets") is not None else None, - "facts": JsonApiDatasetOutRelationshipsFacts.from_dict(obj["facts"]) if obj.get("facts") is not None else None, - "labels": JsonApiAnalyticalDashboardOutRelationshipsLabels.from_dict(obj["labels"]) if obj.get("labels") is not None else None, - "metrics": JsonApiAnalyticalDashboardOutRelationshipsMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_with_links.py deleted file mode 100644 index 4cf295f59..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_metric_out_attributes import JsonApiMetricOutAttributes -from gooddata_api_client.models.json_api_metric_out_relationships import JsonApiMetricOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricOutWithLinks(BaseModel): - """ - JsonApiMetricOutWithLinks - """ # noqa: E501 - attributes: JsonApiMetricOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiMetricOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMetricOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiMetricOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch.py deleted file mode 100644 index b1a0f97b1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_metric_patch_attributes import JsonApiMetricPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricPatch(BaseModel): - """ - JSON:API representation of patching metric entity. - """ # noqa: E501 - attributes: JsonApiMetricPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMetricPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_attributes.py deleted file mode 100644 index b854a5e9d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_attributes.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_metric_in_attributes_content import JsonApiMetricInAttributesContent -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricPatchAttributes(BaseModel): - """ - JsonApiMetricPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[JsonApiMetricInAttributesContent] = None - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - is_hidden_from_kda: Optional[StrictBool] = Field(default=None, alias="isHiddenFromKda") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "isHidden", "isHiddenFromKda", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content - if self.content: - _dict['content'] = self.content.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": JsonApiMetricInAttributesContent.from_dict(obj["content"]) if obj.get("content") is not None else None, - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "isHiddenFromKda": obj.get("isHiddenFromKda"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_document.py deleted file mode 100644 index 86674c24a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_metric_patch import JsonApiMetricPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricPatchDocument(BaseModel): - """ - JsonApiMetricPatchDocument - """ # noqa: E501 - data: JsonApiMetricPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMetricPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id.py deleted file mode 100644 index 1cbacef85..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_metric_in_attributes import JsonApiMetricInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricPostOptionalId(BaseModel): - """ - JSON:API representation of metric entity. - """ # noqa: E501 - attributes: JsonApiMetricInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiMetricInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id_document.py deleted file mode 100644 index d1f8ddd9d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_metric_post_optional_id import JsonApiMetricPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiMetricPostOptionalIdDocument(BaseModel): - """ - JsonApiMetricPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiMetricPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiMetricPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiMetricPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiMetricPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_metric_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_metric_to_one_linkage.py deleted file mode 100644 index fa985e933..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_metric_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_metric_linkage import JsonApiMetricLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIMETRICTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiMetricLinkage"] - -class JsonApiMetricToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiMetricLinkage - oneof_schema_1_validator: Optional[JsonApiMetricLinkage] = None - actual_instance: Optional[Union[JsonApiMetricLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiMetricLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiMetricToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiMetricLinkage - if not isinstance(v, JsonApiMetricLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiMetricLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiMetricToOneLinkage with oneOf schemas: JsonApiMetricLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiMetricLinkage - try: - if match == 0: - instance.actual_instance = JsonApiMetricLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiMetricToOneLinkage with oneOf schemas: JsonApiMetricLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiMetricLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out.py deleted file mode 100644 index 63407ac9e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_identifier_out_attributes import JsonApiNotificationChannelIdentifierOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelIdentifierOut(BaseModel): - """ - JSON:API representation of notificationChannelIdentifier entity. - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelIdentifierOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannelIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannelIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelIdentifierOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_attributes.py deleted file mode 100644 index 923f51035..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_attributes.py +++ /dev/null @@ -1,127 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelIdentifierOutAttributes(BaseModel): - """ - JsonApiNotificationChannelIdentifierOutAttributes - """ # noqa: E501 - allowed_recipients: Optional[StrictStr] = Field(default=None, description="Allowed recipients of notifications from this channel. CREATOR - only the creator INTERNAL - all users within the organization EXTERNAL - all recipients including those outside the organization ", alias="allowedRecipients") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - destination_type: Optional[StrictStr] = Field(default=None, alias="destinationType") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["allowedRecipients", "description", "destinationType", "name"] - - @field_validator('allowed_recipients') - def allowed_recipients_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CREATOR', 'INTERNAL', 'EXTERNAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CREATOR', 'INTERNAL', 'EXTERNAL')") - return value - - @field_validator('destination_type') - def destination_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['WEBHOOK', 'SMTP', 'DEFAULT_SMTP', 'IN_PLATFORM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('WEBHOOK', 'SMTP', 'DEFAULT_SMTP', 'IN_PLATFORM')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedRecipients": obj.get("allowedRecipients"), - "description": obj.get("description"), - "destinationType": obj.get("destinationType"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_document.py deleted file mode 100644 index be42e7cc8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_notification_channel_identifier_out import JsonApiNotificationChannelIdentifierOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelIdentifierOutDocument(BaseModel): - """ - JsonApiNotificationChannelIdentifierOutDocument - """ # noqa: E501 - data: JsonApiNotificationChannelIdentifierOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiNotificationChannelIdentifierOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_list.py deleted file mode 100644 index b9a47fc90..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_notification_channel_identifier_out_with_links import JsonApiNotificationChannelIdentifierOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelIdentifierOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiNotificationChannelIdentifierOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiNotificationChannelIdentifierOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_with_links.py deleted file mode 100644 index 56c1b2ca1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_identifier_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_identifier_out_attributes import JsonApiNotificationChannelIdentifierOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelIdentifierOutWithLinks(BaseModel): - """ - JsonApiNotificationChannelIdentifierOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelIdentifierOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannelIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannelIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIdentifierOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelIdentifierOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in.py deleted file mode 100644 index 55b832eae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_in_attributes import JsonApiNotificationChannelInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelIn(BaseModel): - """ - JSON:API representation of notificationChannel entity. - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes.py deleted file mode 100644 index 91b7a3836..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes.py +++ /dev/null @@ -1,150 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_in_attributes_destination import JsonApiNotificationChannelInAttributesDestination -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelInAttributes(BaseModel): - """ - JsonApiNotificationChannelInAttributes - """ # noqa: E501 - allowed_recipients: Optional[StrictStr] = Field(default=None, description="Allowed recipients of notifications from this channel. CREATOR - only the creator INTERNAL - all users within the organization EXTERNAL - all recipients including those outside the organization ", alias="allowedRecipients") - custom_dashboard_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are: {workspaceId} {dashboardId} {automationId} {asOfDate} ", alias="customDashboardUrl") - dashboard_link_visibility: Optional[StrictStr] = Field(default=None, description="Dashboard link visibility in notifications. HIDDEN - the link will not be included INTERNAL_ONLY - only internal users will see the link ALL - all users will see the link ", alias="dashboardLinkVisibility") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - destination: Optional[JsonApiNotificationChannelInAttributesDestination] = None - in_platform_notification: Optional[StrictStr] = Field(default=None, description="In-platform notifications configuration. No effect if the destination type is IN_PLATFORM. DISABLED - in-platform notifications are not sent ENABLED - in-platform notifications are sent in addition to the regular notifications ", alias="inPlatformNotification") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - notification_source: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are: {{workspaceId}} {{workspaceName}} {{workspaceDescription}} {{dashboardId}} {{dashboardName}} {{dashboardDescription}} ", alias="notificationSource") - __properties: ClassVar[List[str]] = ["allowedRecipients", "customDashboardUrl", "dashboardLinkVisibility", "description", "destination", "inPlatformNotification", "name", "notificationSource"] - - @field_validator('allowed_recipients') - def allowed_recipients_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CREATOR', 'INTERNAL', 'EXTERNAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CREATOR', 'INTERNAL', 'EXTERNAL')") - return value - - @field_validator('dashboard_link_visibility') - def dashboard_link_visibility_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['HIDDEN', 'INTERNAL_ONLY', 'ALL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('HIDDEN', 'INTERNAL_ONLY', 'ALL')") - return value - - @field_validator('in_platform_notification') - def in_platform_notification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DISABLED', 'ENABLED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DISABLED', 'ENABLED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of destination - if self.destination: - _dict['destination'] = self.destination.to_dict() - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedRecipients": obj.get("allowedRecipients"), - "customDashboardUrl": obj.get("customDashboardUrl"), - "dashboardLinkVisibility": obj.get("dashboardLinkVisibility"), - "description": obj.get("description"), - "destination": JsonApiNotificationChannelInAttributesDestination.from_dict(obj["destination"]) if obj.get("destination") is not None else None, - "inPlatformNotification": obj.get("inPlatformNotification"), - "name": obj.get("name"), - "notificationSource": obj.get("notificationSource") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes_destination.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes_destination.py deleted file mode 100644 index d9f3d58a1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_attributes_destination.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.default_smtp import DefaultSmtp -from gooddata_api_client.models.in_platform import InPlatform -from gooddata_api_client.models.smtp import Smtp -from gooddata_api_client.models.webhook import Webhook -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPINOTIFICATIONCHANNELINATTRIBUTESDESTINATION_ONE_OF_SCHEMAS = ["DefaultSmtp", "InPlatform", "Smtp", "Webhook"] - -class JsonApiNotificationChannelInAttributesDestination(BaseModel): - """ - The destination where the notifications are to be sent. - """ - # data type: DefaultSmtp - oneof_schema_1_validator: Optional[DefaultSmtp] = None - # data type: InPlatform - oneof_schema_2_validator: Optional[InPlatform] = None - # data type: Smtp - oneof_schema_3_validator: Optional[Smtp] = None - # data type: Webhook - oneof_schema_4_validator: Optional[Webhook] = None - actual_instance: Optional[Union[DefaultSmtp, InPlatform, Smtp, Webhook]] = None - one_of_schemas: Set[str] = { "DefaultSmtp", "InPlatform", "Smtp", "Webhook" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiNotificationChannelInAttributesDestination.model_construct() - error_messages = [] - match = 0 - # validate data type: DefaultSmtp - if not isinstance(v, DefaultSmtp): - error_messages.append(f"Error! Input type `{type(v)}` is not `DefaultSmtp`") - else: - match += 1 - # validate data type: InPlatform - if not isinstance(v, InPlatform): - error_messages.append(f"Error! Input type `{type(v)}` is not `InPlatform`") - else: - match += 1 - # validate data type: Smtp - if not isinstance(v, Smtp): - error_messages.append(f"Error! Input type `{type(v)}` is not `Smtp`") - else: - match += 1 - # validate data type: Webhook - if not isinstance(v, Webhook): - error_messages.append(f"Error! Input type `{type(v)}` is not `Webhook`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiNotificationChannelInAttributesDestination with oneOf schemas: DefaultSmtp, InPlatform, Smtp, Webhook. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into DefaultSmtp - try: - if match == 0: - instance.actual_instance = DefaultSmtp.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into InPlatform - try: - if match == 0: - instance.actual_instance = InPlatform.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Smtp - try: - if match == 0: - instance.actual_instance = Smtp.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Webhook - try: - if match == 0: - instance.actual_instance = Webhook.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiNotificationChannelInAttributesDestination with oneOf schemas: DefaultSmtp, InPlatform, Smtp, Webhook. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DefaultSmtp, InPlatform, Smtp, Webhook]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_document.py deleted file mode 100644 index 631bdeed4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_notification_channel_in import JsonApiNotificationChannelIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelInDocument(BaseModel): - """ - JsonApiNotificationChannelInDocument - """ # noqa: E501 - data: JsonApiNotificationChannelIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiNotificationChannelIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_linkage.py deleted file mode 100644 index 0f6a9f0fb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out.py deleted file mode 100644 index ffd18f71b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_out_attributes import JsonApiNotificationChannelOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelOut(BaseModel): - """ - JSON:API representation of notificationChannel entity. - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_attributes.py deleted file mode 100644 index bead2ec31..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_attributes.py +++ /dev/null @@ -1,168 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_in_attributes_destination import JsonApiNotificationChannelInAttributesDestination -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelOutAttributes(BaseModel): - """ - JsonApiNotificationChannelOutAttributes - """ # noqa: E501 - allowed_recipients: Optional[StrictStr] = Field(default=None, description="Allowed recipients of notifications from this channel. CREATOR - only the creator INTERNAL - all users within the organization EXTERNAL - all recipients including those outside the organization ", alias="allowedRecipients") - custom_dashboard_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom dashboard url that is going to be used in the notification. If not specified it is going to be deduced based on the context. Allowed placeholders are: {workspaceId} {dashboardId} {automationId} {asOfDate} ", alias="customDashboardUrl") - dashboard_link_visibility: Optional[StrictStr] = Field(default=None, description="Dashboard link visibility in notifications. HIDDEN - the link will not be included INTERNAL_ONLY - only internal users will see the link ALL - all users will see the link ", alias="dashboardLinkVisibility") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - destination: Optional[JsonApiNotificationChannelInAttributesDestination] = None - destination_type: Optional[StrictStr] = Field(default=None, alias="destinationType") - in_platform_notification: Optional[StrictStr] = Field(default=None, description="In-platform notifications configuration. No effect if the destination type is IN_PLATFORM. DISABLED - in-platform notifications are not sent ENABLED - in-platform notifications are sent in addition to the regular notifications ", alias="inPlatformNotification") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - notification_source: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Human-readable description of the source of the notification. If specified, this propertywill be included in the notifications to this channel.Allowed placeholders are: {{workspaceId}} {{workspaceName}} {{workspaceDescription}} {{dashboardId}} {{dashboardName}} {{dashboardDescription}} ", alias="notificationSource") - __properties: ClassVar[List[str]] = ["allowedRecipients", "customDashboardUrl", "dashboardLinkVisibility", "description", "destination", "destinationType", "inPlatformNotification", "name", "notificationSource"] - - @field_validator('allowed_recipients') - def allowed_recipients_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CREATOR', 'INTERNAL', 'EXTERNAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CREATOR', 'INTERNAL', 'EXTERNAL')") - return value - - @field_validator('dashboard_link_visibility') - def dashboard_link_visibility_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['HIDDEN', 'INTERNAL_ONLY', 'ALL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('HIDDEN', 'INTERNAL_ONLY', 'ALL')") - return value - - @field_validator('destination_type') - def destination_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['WEBHOOK', 'SMTP', 'DEFAULT_SMTP', 'IN_PLATFORM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('WEBHOOK', 'SMTP', 'DEFAULT_SMTP', 'IN_PLATFORM')") - return value - - @field_validator('in_platform_notification') - def in_platform_notification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DISABLED', 'ENABLED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DISABLED', 'ENABLED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of destination - if self.destination: - _dict['destination'] = self.destination.to_dict() - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if destination_type (nullable) is None - # and model_fields_set contains the field - if self.destination_type is None and "destination_type" in self.model_fields_set: - _dict['destinationType'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedRecipients": obj.get("allowedRecipients"), - "customDashboardUrl": obj.get("customDashboardUrl"), - "dashboardLinkVisibility": obj.get("dashboardLinkVisibility"), - "description": obj.get("description"), - "destination": JsonApiNotificationChannelInAttributesDestination.from_dict(obj["destination"]) if obj.get("destination") is not None else None, - "destinationType": obj.get("destinationType"), - "inPlatformNotification": obj.get("inPlatformNotification"), - "name": obj.get("name"), - "notificationSource": obj.get("notificationSource") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_document.py deleted file mode 100644 index 21f061676..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_notification_channel_out import JsonApiNotificationChannelOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelOutDocument(BaseModel): - """ - JsonApiNotificationChannelOutDocument - """ # noqa: E501 - data: JsonApiNotificationChannelOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiNotificationChannelOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_list.py deleted file mode 100644 index 611096df1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_notification_channel_out_with_links import JsonApiNotificationChannelOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiNotificationChannelOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiNotificationChannelOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_with_links.py deleted file mode 100644 index bd5f69c9d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_out_attributes import JsonApiNotificationChannelOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelOutWithLinks(BaseModel): - """ - JsonApiNotificationChannelOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch.py deleted file mode 100644 index 5270b7b5d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_in_attributes import JsonApiNotificationChannelInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelPatch(BaseModel): - """ - JSON:API representation of patching notificationChannel entity. - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch_document.py deleted file mode 100644 index 1ff9ada59..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_notification_channel_patch import JsonApiNotificationChannelPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelPatchDocument(BaseModel): - """ - JsonApiNotificationChannelPatchDocument - """ # noqa: E501 - data: JsonApiNotificationChannelPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiNotificationChannelPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id.py deleted file mode 100644 index b5c569a57..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_notification_channel_in_attributes import JsonApiNotificationChannelInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelPostOptionalId(BaseModel): - """ - JSON:API representation of notificationChannel entity. - """ # noqa: E501 - attributes: Optional[JsonApiNotificationChannelInAttributes] = None - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['notificationChannel']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('notificationChannel')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiNotificationChannelInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id_document.py deleted file mode 100644 index c2345591b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_notification_channel_post_optional_id import JsonApiNotificationChannelPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiNotificationChannelPostOptionalIdDocument(BaseModel): - """ - JsonApiNotificationChannelPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiNotificationChannelPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiNotificationChannelPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiNotificationChannelPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_to_one_linkage.py deleted file mode 100644 index e1f36a797..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_notification_channel_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_notification_channel_linkage import JsonApiNotificationChannelLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPINOTIFICATIONCHANNELTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiNotificationChannelLinkage"] - -class JsonApiNotificationChannelToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiNotificationChannelLinkage - oneof_schema_1_validator: Optional[JsonApiNotificationChannelLinkage] = None - actual_instance: Optional[Union[JsonApiNotificationChannelLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiNotificationChannelLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiNotificationChannelToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiNotificationChannelLinkage - if not isinstance(v, JsonApiNotificationChannelLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiNotificationChannelLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiNotificationChannelToOneLinkage with oneOf schemas: JsonApiNotificationChannelLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiNotificationChannelLinkage - try: - if match == 0: - instance.actual_instance = JsonApiNotificationChannelLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiNotificationChannelToOneLinkage with oneOf schemas: JsonApiNotificationChannelLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiNotificationChannelLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_in.py deleted file mode 100644 index 82cfbab25..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_in_attributes import JsonApiOrganizationInAttributes -from gooddata_api_client.models.json_api_organization_in_relationships import JsonApiOrganizationInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationIn(BaseModel): - """ - JSON:API representation of organization entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiOrganizationInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organization']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organization')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiOrganizationInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_attributes.py deleted file mode 100644 index 856504568..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_attributes.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationInAttributes(BaseModel): - """ - JsonApiOrganizationInAttributes - """ # noqa: E501 - allowed_origins: Optional[List[StrictStr]] = Field(default=None, alias="allowedOrigins") - early_access: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", alias="earlyAccess") - early_access_values: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="The early access feature identifiers. They are used to enable experimental features.", alias="earlyAccessValues") - hostname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["allowedOrigins", "earlyAccess", "earlyAccessValues", "hostname", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if early_access (nullable) is None - # and model_fields_set contains the field - if self.early_access is None and "early_access" in self.model_fields_set: - _dict['earlyAccess'] = None - - # set to None if early_access_values (nullable) is None - # and model_fields_set contains the field - if self.early_access_values is None and "early_access_values" in self.model_fields_set: - _dict['earlyAccessValues'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedOrigins": obj.get("allowedOrigins"), - "earlyAccess": obj.get("earlyAccess"), - "earlyAccessValues": obj.get("earlyAccessValues"), - "hostname": obj.get("hostname"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_document.py deleted file mode 100644 index cc8c26f4c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_organization_in import JsonApiOrganizationIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationInDocument(BaseModel): - """ - JsonApiOrganizationInDocument - """ # noqa: E501 - data: JsonApiOrganizationIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiOrganizationIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships.py deleted file mode 100644 index 5c34b5e41..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_organization_in_relationships_identity_provider import JsonApiOrganizationInRelationshipsIdentityProvider -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationInRelationships(BaseModel): - """ - JsonApiOrganizationInRelationships - """ # noqa: E501 - identity_provider: Optional[JsonApiOrganizationInRelationshipsIdentityProvider] = Field(default=None, alias="identityProvider") - __properties: ClassVar[List[str]] = ["identityProvider"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of identity_provider - if self.identity_provider: - _dict['identityProvider'] = self.identity_provider.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "identityProvider": JsonApiOrganizationInRelationshipsIdentityProvider.from_dict(obj["identityProvider"]) if obj.get("identityProvider") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships_identity_provider.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships_identity_provider.py deleted file mode 100644 index 9e0a4ead5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_in_relationships_identity_provider.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_identity_provider_to_one_linkage import JsonApiIdentityProviderToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationInRelationshipsIdentityProvider(BaseModel): - """ - JsonApiOrganizationInRelationshipsIdentityProvider - """ # noqa: E501 - data: Optional[JsonApiIdentityProviderToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInRelationshipsIdentityProvider from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationInRelationshipsIdentityProvider from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiIdentityProviderToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out.py deleted file mode 100644 index 0068caf06..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_out_attributes import JsonApiOrganizationOutAttributes -from gooddata_api_client.models.json_api_organization_out_meta import JsonApiOrganizationOutMeta -from gooddata_api_client.models.json_api_organization_out_relationships import JsonApiOrganizationOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOut(BaseModel): - """ - JSON:API representation of organization entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiOrganizationOutMeta] = None - relationships: Optional[JsonApiOrganizationOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organization']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organization')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiOrganizationOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiOrganizationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes.py deleted file mode 100644 index b5d6d783d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_out_attributes_cache_settings import JsonApiOrganizationOutAttributesCacheSettings -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOutAttributes(BaseModel): - """ - JsonApiOrganizationOutAttributes - """ # noqa: E501 - allowed_origins: Optional[List[StrictStr]] = Field(default=None, alias="allowedOrigins") - cache_settings: Optional[JsonApiOrganizationOutAttributesCacheSettings] = Field(default=None, alias="cacheSettings") - data_center: Optional[StrictStr] = Field(default=None, description="Current deployment region. Should be used for issue investigation only.", alias="dataCenter") - early_access: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", alias="earlyAccess") - early_access_values: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="The early access feature identifiers. They are used to enable experimental features.", alias="earlyAccessValues") - hostname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - region: Optional[StrictStr] = Field(default=None, description="Current deployment cluster name. Should be used for issue investigation only.") - __properties: ClassVar[List[str]] = ["allowedOrigins", "cacheSettings", "dataCenter", "earlyAccess", "earlyAccessValues", "hostname", "name", "region"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of cache_settings - if self.cache_settings: - _dict['cacheSettings'] = self.cache_settings.to_dict() - # set to None if data_center (nullable) is None - # and model_fields_set contains the field - if self.data_center is None and "data_center" in self.model_fields_set: - _dict['dataCenter'] = None - - # set to None if early_access (nullable) is None - # and model_fields_set contains the field - if self.early_access is None and "early_access" in self.model_fields_set: - _dict['earlyAccess'] = None - - # set to None if early_access_values (nullable) is None - # and model_fields_set contains the field - if self.early_access_values is None and "early_access_values" in self.model_fields_set: - _dict['earlyAccessValues'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - # set to None if region (nullable) is None - # and model_fields_set contains the field - if self.region is None and "region" in self.model_fields_set: - _dict['region'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedOrigins": obj.get("allowedOrigins"), - "cacheSettings": JsonApiOrganizationOutAttributesCacheSettings.from_dict(obj["cacheSettings"]) if obj.get("cacheSettings") is not None else None, - "dataCenter": obj.get("dataCenter"), - "earlyAccess": obj.get("earlyAccess"), - "earlyAccessValues": obj.get("earlyAccessValues"), - "hostname": obj.get("hostname"), - "name": obj.get("name"), - "region": obj.get("region") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes_cache_settings.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes_cache_settings.py deleted file mode 100644 index 0a207c0b8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_attributes_cache_settings.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOutAttributesCacheSettings(BaseModel): - """ - JsonApiOrganizationOutAttributesCacheSettings - """ # noqa: E501 - cache_strategy: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="cacheStrategy") - extra_cache_budget: Optional[StrictInt] = Field(default=None, alias="extraCacheBudget") - __properties: ClassVar[List[str]] = ["cacheStrategy", "extraCacheBudget"] - - @field_validator('cache_strategy') - def cache_strategy_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DURABLE', 'EPHEMERAL']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DURABLE', 'EPHEMERAL')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutAttributesCacheSettings from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutAttributesCacheSettings from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "cacheStrategy": obj.get("cacheStrategy"), - "extraCacheBudget": obj.get("extraCacheBudget") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_document.py deleted file mode 100644 index 44657bacd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_organization_out import JsonApiOrganizationOut -from gooddata_api_client.models.json_api_organization_out_includes import JsonApiOrganizationOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOutDocument(BaseModel): - """ - JsonApiOrganizationOutDocument - """ # noqa: E501 - data: JsonApiOrganizationOut - included: Optional[List[JsonApiOrganizationOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiOrganizationOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiOrganizationOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_includes.py deleted file mode 100644 index 688d760ad..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_includes.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_identity_provider_out_with_links import JsonApiIdentityProviderOutWithLinks -from gooddata_api_client.models.json_api_user_group_out_with_links import JsonApiUserGroupOutWithLinks -from gooddata_api_client.models.json_api_user_out_with_links import JsonApiUserOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIORGANIZATIONOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiIdentityProviderOutWithLinks", "JsonApiUserGroupOutWithLinks", "JsonApiUserOutWithLinks"] - -class JsonApiOrganizationOutIncludes(BaseModel): - """ - JsonApiOrganizationOutIncludes - """ - # data type: JsonApiUserOutWithLinks - oneof_schema_1_validator: Optional[JsonApiUserOutWithLinks] = None - # data type: JsonApiUserGroupOutWithLinks - oneof_schema_2_validator: Optional[JsonApiUserGroupOutWithLinks] = None - # data type: JsonApiIdentityProviderOutWithLinks - oneof_schema_3_validator: Optional[JsonApiIdentityProviderOutWithLinks] = None - actual_instance: Optional[Union[JsonApiIdentityProviderOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiIdentityProviderOutWithLinks", "JsonApiUserGroupOutWithLinks", "JsonApiUserOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiOrganizationOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserOutWithLinks - if not isinstance(v, JsonApiUserOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserGroupOutWithLinks - if not isinstance(v, JsonApiUserGroupOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserGroupOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiIdentityProviderOutWithLinks - if not isinstance(v, JsonApiIdentityProviderOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiIdentityProviderOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiOrganizationOutIncludes with oneOf schemas: JsonApiIdentityProviderOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserGroupOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserGroupOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiIdentityProviderOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiIdentityProviderOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiOrganizationOutIncludes with oneOf schemas: JsonApiIdentityProviderOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiIdentityProviderOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_meta.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_meta.py deleted file mode 100644 index ad94800f3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_meta.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOutMeta(BaseModel): - """ - JsonApiOrganizationOutMeta - """ # noqa: E501 - permissions: Optional[List[StrictStr]] = Field(default=None, description="List of valid permissions for a logged-in user.") - __properties: ClassVar[List[str]] = ["permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['MANAGE', 'SELF_CREATE_TOKEN', 'BASE_UI_ACCESS']): - raise ValueError("each list item must be one of ('MANAGE', 'SELF_CREATE_TOKEN', 'BASE_UI_ACCESS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships.py deleted file mode 100644 index a3f46e7fb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_filter_view_in_relationships_user import JsonApiFilterViewInRelationshipsUser -from gooddata_api_client.models.json_api_organization_in_relationships_identity_provider import JsonApiOrganizationInRelationshipsIdentityProvider -from gooddata_api_client.models.json_api_organization_out_relationships_bootstrap_user_group import JsonApiOrganizationOutRelationshipsBootstrapUserGroup -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOutRelationships(BaseModel): - """ - JsonApiOrganizationOutRelationships - """ # noqa: E501 - bootstrap_user: Optional[JsonApiFilterViewInRelationshipsUser] = Field(default=None, alias="bootstrapUser") - bootstrap_user_group: Optional[JsonApiOrganizationOutRelationshipsBootstrapUserGroup] = Field(default=None, alias="bootstrapUserGroup") - identity_provider: Optional[JsonApiOrganizationInRelationshipsIdentityProvider] = Field(default=None, alias="identityProvider") - __properties: ClassVar[List[str]] = ["bootstrapUser", "bootstrapUserGroup", "identityProvider"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of bootstrap_user - if self.bootstrap_user: - _dict['bootstrapUser'] = self.bootstrap_user.to_dict() - # override the default output from pydantic by calling `to_dict()` of bootstrap_user_group - if self.bootstrap_user_group: - _dict['bootstrapUserGroup'] = self.bootstrap_user_group.to_dict() - # override the default output from pydantic by calling `to_dict()` of identity_provider - if self.identity_provider: - _dict['identityProvider'] = self.identity_provider.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "bootstrapUser": JsonApiFilterViewInRelationshipsUser.from_dict(obj["bootstrapUser"]) if obj.get("bootstrapUser") is not None else None, - "bootstrapUserGroup": JsonApiOrganizationOutRelationshipsBootstrapUserGroup.from_dict(obj["bootstrapUserGroup"]) if obj.get("bootstrapUserGroup") is not None else None, - "identityProvider": JsonApiOrganizationInRelationshipsIdentityProvider.from_dict(obj["identityProvider"]) if obj.get("identityProvider") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships_bootstrap_user_group.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships_bootstrap_user_group.py deleted file mode 100644 index a5b44beff..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_out_relationships_bootstrap_user_group.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_group_to_one_linkage import JsonApiUserGroupToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationOutRelationshipsBootstrapUserGroup(BaseModel): - """ - JsonApiOrganizationOutRelationshipsBootstrapUserGroup - """ # noqa: E501 - data: Optional[JsonApiUserGroupToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutRelationshipsBootstrapUserGroup from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationOutRelationshipsBootstrapUserGroup from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserGroupToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_patch.py deleted file mode 100644 index 16fdc94c9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_in_attributes import JsonApiOrganizationInAttributes -from gooddata_api_client.models.json_api_organization_in_relationships import JsonApiOrganizationInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationPatch(BaseModel): - """ - JSON:API representation of patching organization entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiOrganizationInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organization']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organization')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiOrganizationInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_patch_document.py deleted file mode 100644 index a188721c6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_organization_patch import JsonApiOrganizationPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationPatchDocument(BaseModel): - """ - JsonApiOrganizationPatchDocument - """ # noqa: E501 - data: JsonApiOrganizationPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiOrganizationPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in.py deleted file mode 100644 index bda5158d2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingIn(BaseModel): - """ - JSON:API representation of organizationSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organizationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organizationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_attributes.py deleted file mode 100644 index 1ecccf9d7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_attributes.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingInAttributes(BaseModel): - """ - JsonApiOrganizationSettingInAttributes - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 15000 characters.") - type: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["content", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TIMEZONE', 'ACTIVE_THEME', 'ACTIVE_COLOR_PALETTE', 'ACTIVE_LLM_ENDPOINT', 'ACTIVE_LLM_PROVIDER', 'ACTIVE_CALENDARS', 'WHITE_LABELING', 'LOCALE', 'METADATA_LOCALE', 'FORMAT_LOCALE', 'MAPBOX_TOKEN', 'AG_GRID_TOKEN', 'WEEK_START', 'FISCAL_YEAR', 'SHOW_HIDDEN_CATALOG_ITEMS', 'OPERATOR_OVERRIDES', 'TIMEZONE_VALIDATION_ENABLED', 'OPENAI_CONFIG', 'ENABLE_FILE_ANALYTICS', 'ALERT', 'SEPARATORS', 'DATE_FILTER_CONFIG', 'JIT_PROVISIONING', 'JWT_JIT_PROVISIONING', 'DASHBOARD_FILTERS_APPLY_MODE', 'ENABLE_SLIDES_EXPORT', 'ENABLE_SNAPSHOT_EXPORT', 'AI_RATE_LIMIT', 'ATTACHMENT_SIZE_LIMIT', 'ATTACHMENT_LINK_TTL', 'AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE', 'ENABLE_DRILL_TO_URL_BY_DEFAULT', 'ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS', 'ENABLE_AUTOMATION_EVALUATION_MODE', 'ENABLE_ACCESSIBILITY_MODE', 'REGISTERED_PLUGGABLE_APPLICATIONS', 'DATA_LOCALE', 'LDM_DEFAULT_LOCALE', 'EXPORT_RESULT_POLLING_TIMEOUT_SECONDS', 'MAX_ZOOM_LEVEL', 'SORT_CASE_SENSITIVE', 'METRIC_FORMAT_OVERRIDE', 'ENABLE_AI_ON_DATA', 'API_ENTITIES_DEFAULT_CONTENT_MEDIA_TYPE', 'ENABLE_NULL_JOINS', 'EXPORT_CSV_CUSTOM_DELIMITER', 'ENABLE_QUERY_TAGS', 'RESTRICT_BASE_UI', 'CERTIFY_PARENT_OBJECTS']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TIMEZONE', 'ACTIVE_THEME', 'ACTIVE_COLOR_PALETTE', 'ACTIVE_LLM_ENDPOINT', 'ACTIVE_LLM_PROVIDER', 'ACTIVE_CALENDARS', 'WHITE_LABELING', 'LOCALE', 'METADATA_LOCALE', 'FORMAT_LOCALE', 'MAPBOX_TOKEN', 'AG_GRID_TOKEN', 'WEEK_START', 'FISCAL_YEAR', 'SHOW_HIDDEN_CATALOG_ITEMS', 'OPERATOR_OVERRIDES', 'TIMEZONE_VALIDATION_ENABLED', 'OPENAI_CONFIG', 'ENABLE_FILE_ANALYTICS', 'ALERT', 'SEPARATORS', 'DATE_FILTER_CONFIG', 'JIT_PROVISIONING', 'JWT_JIT_PROVISIONING', 'DASHBOARD_FILTERS_APPLY_MODE', 'ENABLE_SLIDES_EXPORT', 'ENABLE_SNAPSHOT_EXPORT', 'AI_RATE_LIMIT', 'ATTACHMENT_SIZE_LIMIT', 'ATTACHMENT_LINK_TTL', 'AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE', 'ENABLE_DRILL_TO_URL_BY_DEFAULT', 'ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS', 'ENABLE_AUTOMATION_EVALUATION_MODE', 'ENABLE_ACCESSIBILITY_MODE', 'REGISTERED_PLUGGABLE_APPLICATIONS', 'DATA_LOCALE', 'LDM_DEFAULT_LOCALE', 'EXPORT_RESULT_POLLING_TIMEOUT_SECONDS', 'MAX_ZOOM_LEVEL', 'SORT_CASE_SENSITIVE', 'METRIC_FORMAT_OVERRIDE', 'ENABLE_AI_ON_DATA', 'API_ENTITIES_DEFAULT_CONTENT_MEDIA_TYPE', 'ENABLE_NULL_JOINS', 'EXPORT_CSV_CUSTOM_DELIMITER', 'ENABLE_QUERY_TAGS', 'RESTRICT_BASE_UI', 'CERTIFY_PARENT_OBJECTS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_document.py deleted file mode 100644 index f541df8fa..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_organization_setting_in import JsonApiOrganizationSettingIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingInDocument(BaseModel): - """ - JsonApiOrganizationSettingInDocument - """ # noqa: E501 - data: JsonApiOrganizationSettingIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiOrganizationSettingIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out.py deleted file mode 100644 index ac983552b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingOut(BaseModel): - """ - JSON:API representation of organizationSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organizationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organizationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_document.py deleted file mode 100644 index 3186f2e16..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_organization_setting_out import JsonApiOrganizationSettingOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingOutDocument(BaseModel): - """ - JsonApiOrganizationSettingOutDocument - """ # noqa: E501 - data: JsonApiOrganizationSettingOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiOrganizationSettingOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_list.py deleted file mode 100644 index bd725f286..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_organization_setting_out_with_links import JsonApiOrganizationSettingOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiOrganizationSettingOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiOrganizationSettingOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_with_links.py deleted file mode 100644 index 34115b362..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingOutWithLinks(BaseModel): - """ - JsonApiOrganizationSettingOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organizationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organizationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch.py deleted file mode 100644 index 0dfa1c66b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingPatch(BaseModel): - """ - JSON:API representation of patching organizationSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['organizationSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('organizationSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch_document.py deleted file mode 100644 index ef6a68e0e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_organization_setting_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_organization_setting_patch import JsonApiOrganizationSettingPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiOrganizationSettingPatchDocument(BaseModel): - """ - JsonApiOrganizationSettingPatchDocument - """ # noqa: E501 - data: JsonApiOrganizationSettingPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiOrganizationSettingPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiOrganizationSettingPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_in.py deleted file mode 100644 index 024fc3e2e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_in_attributes import JsonApiColorPaletteInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemeIn(BaseModel): - """ - JSON:API representation of theme entity. - """ # noqa: E501 - attributes: JsonApiColorPaletteInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['theme']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('theme')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemeIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemeIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPaletteInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_in_document.py deleted file mode 100644 index 8d8abb220..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_theme_in import JsonApiThemeIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemeInDocument(BaseModel): - """ - JsonApiThemeInDocument - """ # noqa: E501 - data: JsonApiThemeIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemeInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemeInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiThemeIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_out.py deleted file mode 100644 index de7bf10ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_in_attributes import JsonApiColorPaletteInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemeOut(BaseModel): - """ - JSON:API representation of theme entity. - """ # noqa: E501 - attributes: JsonApiColorPaletteInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['theme']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('theme')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemeOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemeOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPaletteInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_document.py deleted file mode 100644 index 79a1082f8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_theme_out import JsonApiThemeOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemeOutDocument(BaseModel): - """ - JsonApiThemeOutDocument - """ # noqa: E501 - data: JsonApiThemeOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemeOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemeOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiThemeOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_list.py deleted file mode 100644 index 9f3ea369d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_theme_out_with_links import JsonApiThemeOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemeOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiThemeOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemeOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemeOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiThemeOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_with_links.py deleted file mode 100644 index c66a681e5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_in_attributes import JsonApiColorPaletteInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemeOutWithLinks(BaseModel): - """ - JsonApiThemeOutWithLinks - """ # noqa: E501 - attributes: JsonApiColorPaletteInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['theme']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('theme')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemeOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemeOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPaletteInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_patch.py deleted file mode 100644 index 6902a01a8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_color_palette_patch_attributes import JsonApiColorPalettePatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemePatch(BaseModel): - """ - JSON:API representation of patching theme entity. - """ # noqa: E501 - attributes: JsonApiColorPalettePatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['theme']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('theme')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiColorPalettePatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_theme_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_theme_patch_document.py deleted file mode 100644 index 16dfd8440..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_theme_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_theme_patch import JsonApiThemePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiThemePatchDocument(BaseModel): - """ - JsonApiThemePatchDocument - """ # noqa: E501 - data: JsonApiThemePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiThemePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiThemePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiThemePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in.py deleted file mode 100644 index f45506569..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_data_filter_in_attributes import JsonApiUserDataFilterInAttributes -from gooddata_api_client.models.json_api_user_data_filter_in_relationships import JsonApiUserDataFilterInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterIn(BaseModel): - """ - JSON:API representation of userDataFilter entity. - """ # noqa: E501 - attributes: JsonApiUserDataFilterInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_attributes.py deleted file mode 100644 index a8eea3b41..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_attributes.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterInAttributes(BaseModel): - """ - JsonApiUserDataFilterInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - maql: Annotated[str, Field(strict=True, max_length=10000)] - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "maql", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "maql": obj.get("maql"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_document.py deleted file mode 100644 index 16be9188b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_data_filter_in import JsonApiUserDataFilterIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterInDocument(BaseModel): - """ - JsonApiUserDataFilterInDocument - """ # noqa: E501 - data: JsonApiUserDataFilterIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserDataFilterIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_relationships.py deleted file mode 100644 index 159e3730b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_in_relationships.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_filter_view_in_relationships_user import JsonApiFilterViewInRelationshipsUser -from gooddata_api_client.models.json_api_organization_out_relationships_bootstrap_user_group import JsonApiOrganizationOutRelationshipsBootstrapUserGroup -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterInRelationships(BaseModel): - """ - JsonApiUserDataFilterInRelationships - """ # noqa: E501 - user: Optional[JsonApiFilterViewInRelationshipsUser] = None - user_group: Optional[JsonApiOrganizationOutRelationshipsBootstrapUserGroup] = Field(default=None, alias="userGroup") - __properties: ClassVar[List[str]] = ["user", "userGroup"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of user - if self.user: - _dict['user'] = self.user.to_dict() - # override the default output from pydantic by calling `to_dict()` of user_group - if self.user_group: - _dict['userGroup'] = self.user_group.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "user": JsonApiFilterViewInRelationshipsUser.from_dict(obj["user"]) if obj.get("user") is not None else None, - "userGroup": JsonApiOrganizationOutRelationshipsBootstrapUserGroup.from_dict(obj["userGroup"]) if obj.get("userGroup") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out.py deleted file mode 100644 index 62db20432..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_user_data_filter_in_attributes import JsonApiUserDataFilterInAttributes -from gooddata_api_client.models.json_api_user_data_filter_out_relationships import JsonApiUserDataFilterOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterOut(BaseModel): - """ - JSON:API representation of userDataFilter entity. - """ # noqa: E501 - attributes: JsonApiUserDataFilterInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiUserDataFilterOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiUserDataFilterOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_document.py deleted file mode 100644 index f5275091b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_data_filter_out import JsonApiUserDataFilterOut -from gooddata_api_client.models.json_api_user_data_filter_out_includes import JsonApiUserDataFilterOutIncludes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterOutDocument(BaseModel): - """ - JsonApiUserDataFilterOutDocument - """ # noqa: E501 - data: JsonApiUserDataFilterOut - included: Optional[List[JsonApiUserDataFilterOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserDataFilterOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiUserDataFilterOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_includes.py deleted file mode 100644 index b786c932d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_includes.py +++ /dev/null @@ -1,216 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_attribute_out_with_links import JsonApiAttributeOutWithLinks -from gooddata_api_client.models.json_api_dataset_out_with_links import JsonApiDatasetOutWithLinks -from gooddata_api_client.models.json_api_fact_out_with_links import JsonApiFactOutWithLinks -from gooddata_api_client.models.json_api_label_out_with_links import JsonApiLabelOutWithLinks -from gooddata_api_client.models.json_api_metric_out_with_links import JsonApiMetricOutWithLinks -from gooddata_api_client.models.json_api_user_group_out_with_links import JsonApiUserGroupOutWithLinks -from gooddata_api_client.models.json_api_user_out_with_links import JsonApiUserOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIUSERDATAFILTEROUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks", "JsonApiLabelOutWithLinks", "JsonApiMetricOutWithLinks", "JsonApiUserGroupOutWithLinks", "JsonApiUserOutWithLinks"] - -class JsonApiUserDataFilterOutIncludes(BaseModel): - """ - JsonApiUserDataFilterOutIncludes - """ - # data type: JsonApiUserOutWithLinks - oneof_schema_1_validator: Optional[JsonApiUserOutWithLinks] = None - # data type: JsonApiUserGroupOutWithLinks - oneof_schema_2_validator: Optional[JsonApiUserGroupOutWithLinks] = None - # data type: JsonApiFactOutWithLinks - oneof_schema_3_validator: Optional[JsonApiFactOutWithLinks] = None - # data type: JsonApiAttributeOutWithLinks - oneof_schema_4_validator: Optional[JsonApiAttributeOutWithLinks] = None - # data type: JsonApiLabelOutWithLinks - oneof_schema_5_validator: Optional[JsonApiLabelOutWithLinks] = None - # data type: JsonApiMetricOutWithLinks - oneof_schema_6_validator: Optional[JsonApiMetricOutWithLinks] = None - # data type: JsonApiDatasetOutWithLinks - oneof_schema_7_validator: Optional[JsonApiDatasetOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAttributeOutWithLinks", "JsonApiDatasetOutWithLinks", "JsonApiFactOutWithLinks", "JsonApiLabelOutWithLinks", "JsonApiMetricOutWithLinks", "JsonApiUserGroupOutWithLinks", "JsonApiUserOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiUserDataFilterOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserOutWithLinks - if not isinstance(v, JsonApiUserOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserGroupOutWithLinks - if not isinstance(v, JsonApiUserGroupOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserGroupOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiFactOutWithLinks - if not isinstance(v, JsonApiFactOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiFactOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAttributeOutWithLinks - if not isinstance(v, JsonApiAttributeOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAttributeOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiLabelOutWithLinks - if not isinstance(v, JsonApiLabelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiLabelOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiMetricOutWithLinks - if not isinstance(v, JsonApiMetricOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiMetricOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiDatasetOutWithLinks - if not isinstance(v, JsonApiDatasetOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiDatasetOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiUserDataFilterOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserGroupOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserGroupOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiFactOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiFactOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAttributeOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAttributeOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiLabelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiLabelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiMetricOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiMetricOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiDatasetOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiDatasetOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiUserDataFilterOutIncludes with oneOf schemas: JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAttributeOutWithLinks, JsonApiDatasetOutWithLinks, JsonApiFactOutWithLinks, JsonApiLabelOutWithLinks, JsonApiMetricOutWithLinks, JsonApiUserGroupOutWithLinks, JsonApiUserOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_list.py deleted file mode 100644 index 25d691561..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_user_data_filter_out_includes import JsonApiUserDataFilterOutIncludes -from gooddata_api_client.models.json_api_user_data_filter_out_with_links import JsonApiUserDataFilterOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiUserDataFilterOutWithLinks] - included: Optional[List[JsonApiUserDataFilterOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserDataFilterOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiUserDataFilterOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_relationships.py deleted file mode 100644 index e3917ed7b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_relationships.py +++ /dev/null @@ -1,128 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_datasets import JsonApiAnalyticalDashboardOutRelationshipsDatasets -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_labels import JsonApiAnalyticalDashboardOutRelationshipsLabels -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_metrics import JsonApiAnalyticalDashboardOutRelationshipsMetrics -from gooddata_api_client.models.json_api_attribute_hierarchy_out_relationships_attributes import JsonApiAttributeHierarchyOutRelationshipsAttributes -from gooddata_api_client.models.json_api_dataset_out_relationships_facts import JsonApiDatasetOutRelationshipsFacts -from gooddata_api_client.models.json_api_filter_view_in_relationships_user import JsonApiFilterViewInRelationshipsUser -from gooddata_api_client.models.json_api_organization_out_relationships_bootstrap_user_group import JsonApiOrganizationOutRelationshipsBootstrapUserGroup -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterOutRelationships(BaseModel): - """ - JsonApiUserDataFilterOutRelationships - """ # noqa: E501 - attributes: Optional[JsonApiAttributeHierarchyOutRelationshipsAttributes] = None - datasets: Optional[JsonApiAnalyticalDashboardOutRelationshipsDatasets] = None - facts: Optional[JsonApiDatasetOutRelationshipsFacts] = None - labels: Optional[JsonApiAnalyticalDashboardOutRelationshipsLabels] = None - metrics: Optional[JsonApiAnalyticalDashboardOutRelationshipsMetrics] = None - user: Optional[JsonApiFilterViewInRelationshipsUser] = None - user_group: Optional[JsonApiOrganizationOutRelationshipsBootstrapUserGroup] = Field(default=None, alias="userGroup") - __properties: ClassVar[List[str]] = ["attributes", "datasets", "facts", "labels", "metrics", "user", "userGroup"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of datasets - if self.datasets: - _dict['datasets'] = self.datasets.to_dict() - # override the default output from pydantic by calling `to_dict()` of facts - if self.facts: - _dict['facts'] = self.facts.to_dict() - # override the default output from pydantic by calling `to_dict()` of labels - if self.labels: - _dict['labels'] = self.labels.to_dict() - # override the default output from pydantic by calling `to_dict()` of metrics - if self.metrics: - _dict['metrics'] = self.metrics.to_dict() - # override the default output from pydantic by calling `to_dict()` of user - if self.user: - _dict['user'] = self.user.to_dict() - # override the default output from pydantic by calling `to_dict()` of user_group - if self.user_group: - _dict['userGroup'] = self.user_group.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiAttributeHierarchyOutRelationshipsAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "datasets": JsonApiAnalyticalDashboardOutRelationshipsDatasets.from_dict(obj["datasets"]) if obj.get("datasets") is not None else None, - "facts": JsonApiDatasetOutRelationshipsFacts.from_dict(obj["facts"]) if obj.get("facts") is not None else None, - "labels": JsonApiAnalyticalDashboardOutRelationshipsLabels.from_dict(obj["labels"]) if obj.get("labels") is not None else None, - "metrics": JsonApiAnalyticalDashboardOutRelationshipsMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None, - "user": JsonApiFilterViewInRelationshipsUser.from_dict(obj["user"]) if obj.get("user") is not None else None, - "userGroup": JsonApiOrganizationOutRelationshipsBootstrapUserGroup.from_dict(obj["userGroup"]) if obj.get("userGroup") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_with_links.py deleted file mode 100644 index 59584ef87..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_user_data_filter_in_attributes import JsonApiUserDataFilterInAttributes -from gooddata_api_client.models.json_api_user_data_filter_out_relationships import JsonApiUserDataFilterOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterOutWithLinks(BaseModel): - """ - JsonApiUserDataFilterOutWithLinks - """ # noqa: E501 - attributes: JsonApiUserDataFilterInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiUserDataFilterOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiUserDataFilterOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch.py deleted file mode 100644 index 322212cb2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_data_filter_in_relationships import JsonApiUserDataFilterInRelationships -from gooddata_api_client.models.json_api_user_data_filter_patch_attributes import JsonApiUserDataFilterPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterPatch(BaseModel): - """ - JSON:API representation of patching userDataFilter entity. - """ # noqa: E501 - attributes: JsonApiUserDataFilterPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserDataFilterPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_attributes.py deleted file mode 100644 index 1db7aa028..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_attributes.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterPatchAttributes(BaseModel): - """ - JsonApiUserDataFilterPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - maql: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "description", "maql", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "description": obj.get("description"), - "maql": obj.get("maql"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_document.py deleted file mode 100644 index 3ec9d9b03..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_data_filter_patch import JsonApiUserDataFilterPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterPatchDocument(BaseModel): - """ - JsonApiUserDataFilterPatchDocument - """ # noqa: E501 - data: JsonApiUserDataFilterPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserDataFilterPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id.py deleted file mode 100644 index a3de96d4a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_data_filter_in_attributes import JsonApiUserDataFilterInAttributes -from gooddata_api_client.models.json_api_user_data_filter_in_relationships import JsonApiUserDataFilterInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterPostOptionalId(BaseModel): - """ - JSON:API representation of userDataFilter entity. - """ # noqa: E501 - attributes: JsonApiUserDataFilterInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - relationships: Optional[JsonApiUserDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id_document.py deleted file mode 100644 index 787a1b40f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_data_filter_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_data_filter_post_optional_id import JsonApiUserDataFilterPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserDataFilterPostOptionalIdDocument(BaseModel): - """ - JsonApiUserDataFilterPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiUserDataFilterPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserDataFilterPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserDataFilterPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in.py deleted file mode 100644 index 71653b349..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_group_in_attributes import JsonApiUserGroupInAttributes -from gooddata_api_client.models.json_api_user_group_in_relationships import JsonApiUserGroupInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupIn(BaseModel): - """ - JSON:API representation of userGroup entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserGroupInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserGroupInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserGroupInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserGroupInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_attributes.py deleted file mode 100644 index 6618e3c9b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_attributes.py +++ /dev/null @@ -1,89 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupInAttributes(BaseModel): - """ - JsonApiUserGroupInAttributes - """ # noqa: E501 - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_document.py deleted file mode 100644 index 00b918b8b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_group_in import JsonApiUserGroupIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupInDocument(BaseModel): - """ - JsonApiUserGroupInDocument - """ # noqa: E501 - data: JsonApiUserGroupIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserGroupIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships.py deleted file mode 100644 index 08a103bda..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_group_in_relationships_parents import JsonApiUserGroupInRelationshipsParents -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupInRelationships(BaseModel): - """ - JsonApiUserGroupInRelationships - """ # noqa: E501 - parents: Optional[JsonApiUserGroupInRelationshipsParents] = None - __properties: ClassVar[List[str]] = ["parents"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of parents - if self.parents: - _dict['parents'] = self.parents.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "parents": JsonApiUserGroupInRelationshipsParents.from_dict(obj["parents"]) if obj.get("parents") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships_parents.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships_parents.py deleted file mode 100644 index 3f5cb6d46..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_in_relationships_parents.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_group_linkage import JsonApiUserGroupLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupInRelationshipsParents(BaseModel): - """ - JsonApiUserGroupInRelationshipsParents - """ # noqa: E501 - data: List[JsonApiUserGroupLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInRelationshipsParents from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupInRelationshipsParents from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserGroupLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_linkage.py deleted file mode 100644 index 2e62cb3ae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out.py deleted file mode 100644 index c91abf6cb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_group_in_attributes import JsonApiUserGroupInAttributes -from gooddata_api_client.models.json_api_user_group_in_relationships import JsonApiUserGroupInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupOut(BaseModel): - """ - JSON:API representation of userGroup entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserGroupInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserGroupInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserGroupInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserGroupInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_document.py deleted file mode 100644 index f7a4c8624..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_group_out import JsonApiUserGroupOut -from gooddata_api_client.models.json_api_user_group_out_with_links import JsonApiUserGroupOutWithLinks -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupOutDocument(BaseModel): - """ - JsonApiUserGroupOutDocument - """ # noqa: E501 - data: JsonApiUserGroupOut - included: Optional[List[JsonApiUserGroupOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserGroupOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiUserGroupOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_list.py deleted file mode 100644 index 69d49f461..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_list.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_user_group_out_with_links import JsonApiUserGroupOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiUserGroupOutWithLinks] - included: Optional[List[JsonApiUserGroupOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserGroupOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiUserGroupOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_with_links.py deleted file mode 100644 index 848c5c947..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_group_in_attributes import JsonApiUserGroupInAttributes -from gooddata_api_client.models.json_api_user_group_in_relationships import JsonApiUserGroupInRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupOutWithLinks(BaseModel): - """ - JsonApiUserGroupOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiUserGroupInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserGroupInRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserGroupInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserGroupInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch.py deleted file mode 100644 index fd20263e8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_group_in_attributes import JsonApiUserGroupInAttributes -from gooddata_api_client.models.json_api_user_group_in_relationships import JsonApiUserGroupInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupPatch(BaseModel): - """ - JSON:API representation of patching userGroup entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserGroupInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserGroupInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userGroup']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userGroup')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserGroupInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserGroupInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch_document.py deleted file mode 100644 index 2a58f7d45..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_group_patch import JsonApiUserGroupPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserGroupPatchDocument(BaseModel): - """ - JsonApiUserGroupPatchDocument - """ # noqa: E501 - data: JsonApiUserGroupPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserGroupPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserGroupPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserGroupPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_group_to_one_linkage.py deleted file mode 100644 index 34a596d81..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_group_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_user_group_linkage import JsonApiUserGroupLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIUSERGROUPTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiUserGroupLinkage"] - -class JsonApiUserGroupToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiUserGroupLinkage - oneof_schema_1_validator: Optional[JsonApiUserGroupLinkage] = None - actual_instance: Optional[Union[JsonApiUserGroupLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiUserGroupLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiUserGroupToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserGroupLinkage - if not isinstance(v, JsonApiUserGroupLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserGroupLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiUserGroupToOneLinkage with oneOf schemas: JsonApiUserGroupLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserGroupLinkage - try: - if match == 0: - instance.actual_instance = JsonApiUserGroupLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiUserGroupToOneLinkage with oneOf schemas: JsonApiUserGroupLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiUserGroupLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_linkage.py deleted file mode 100644 index e59302466..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIdentifierLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out.py deleted file mode 100644 index a7086fb0a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_identifier_out_attributes import JsonApiUserIdentifierOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIdentifierOut(BaseModel): - """ - JSON:API representation of userIdentifier entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserIdentifierOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserIdentifierOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_attributes.py deleted file mode 100644 index 9c3c019f2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_attributes.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIdentifierOutAttributes(BaseModel): - """ - JsonApiUserIdentifierOutAttributes - """ # noqa: E501 - email: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - firstname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - lastname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["email", "firstname", "lastname"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email"), - "firstname": obj.get("firstname"), - "lastname": obj.get("lastname") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_document.py deleted file mode 100644 index a3dfe05c2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_identifier_out import JsonApiUserIdentifierOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIdentifierOutDocument(BaseModel): - """ - JsonApiUserIdentifierOutDocument - """ # noqa: E501 - data: JsonApiUserIdentifierOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserIdentifierOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_list.py deleted file mode 100644 index b41b9bb39..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIdentifierOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiUserIdentifierOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserIdentifierOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_with_links.py deleted file mode 100644 index 26bd1d566..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_identifier_out_attributes import JsonApiUserIdentifierOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIdentifierOutWithLinks(BaseModel): - """ - JsonApiUserIdentifierOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiUserIdentifierOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userIdentifier']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userIdentifier')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIdentifierOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserIdentifierOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_to_one_linkage.py deleted file mode 100644 index 5bcd721fe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_identifier_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_user_identifier_linkage import JsonApiUserIdentifierLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIUSERIDENTIFIERTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiUserIdentifierLinkage"] - -class JsonApiUserIdentifierToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiUserIdentifierLinkage - oneof_schema_1_validator: Optional[JsonApiUserIdentifierLinkage] = None - actual_instance: Optional[Union[JsonApiUserIdentifierLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiUserIdentifierLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiUserIdentifierToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserIdentifierLinkage - if not isinstance(v, JsonApiUserIdentifierLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiUserIdentifierToOneLinkage with oneOf schemas: JsonApiUserIdentifierLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserIdentifierLinkage - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiUserIdentifierToOneLinkage with oneOf schemas: JsonApiUserIdentifierLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiUserIdentifierLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_in.py deleted file mode 100644 index 16be9fb1e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_in_attributes import JsonApiUserInAttributes -from gooddata_api_client.models.json_api_user_in_relationships import JsonApiUserInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserIn(BaseModel): - """ - JSON:API representation of user entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_in_attributes.py deleted file mode 100644 index 32e9a2822..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_in_attributes.py +++ /dev/null @@ -1,95 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserInAttributes(BaseModel): - """ - JsonApiUserInAttributes - """ # noqa: E501 - authentication_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="authenticationId") - email: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - firstname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - lastname: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["authenticationId", "email", "firstname", "lastname"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "authenticationId": obj.get("authenticationId"), - "email": obj.get("email"), - "firstname": obj.get("firstname"), - "lastname": obj.get("lastname") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_in_document.py deleted file mode 100644 index f1349ece2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_in import JsonApiUserIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserInDocument(BaseModel): - """ - JsonApiUserInDocument - """ # noqa: E501 - data: JsonApiUserIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_in_relationships.py deleted file mode 100644 index ef95a4387..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_in_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_group_in_relationships_parents import JsonApiUserGroupInRelationshipsParents -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserInRelationships(BaseModel): - """ - JsonApiUserInRelationships - """ # noqa: E501 - user_groups: Optional[JsonApiUserGroupInRelationshipsParents] = Field(default=None, alias="userGroups") - __properties: ClassVar[List[str]] = ["userGroups"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of user_groups - if self.user_groups: - _dict['userGroups'] = self.user_groups.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "userGroups": JsonApiUserGroupInRelationshipsParents.from_dict(obj["userGroups"]) if obj.get("userGroups") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_linkage.py deleted file mode 100644 index 07e053fe6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_out.py deleted file mode 100644 index a2e25c6af..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_in_attributes import JsonApiUserInAttributes -from gooddata_api_client.models.json_api_user_in_relationships import JsonApiUserInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserOut(BaseModel): - """ - JSON:API representation of user entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_out_document.py deleted file mode 100644 index 01cc0c3c7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_group_out_with_links import JsonApiUserGroupOutWithLinks -from gooddata_api_client.models.json_api_user_out import JsonApiUserOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserOutDocument(BaseModel): - """ - JsonApiUserOutDocument - """ # noqa: E501 - data: JsonApiUserOut - included: Optional[List[JsonApiUserGroupOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiUserGroupOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_out_list.py deleted file mode 100644 index 9ade572f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_user_group_out_with_links import JsonApiUserGroupOutWithLinks -from gooddata_api_client.models.json_api_user_out_with_links import JsonApiUserOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiUserOutWithLinks] - included: Optional[List[JsonApiUserGroupOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiUserGroupOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_out_with_links.py deleted file mode 100644 index 5a4e7fc1b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_in_attributes import JsonApiUserInAttributes -from gooddata_api_client.models.json_api_user_in_relationships import JsonApiUserInRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserOutWithLinks(BaseModel): - """ - JsonApiUserOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiUserInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserInRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_patch.py deleted file mode 100644 index 4ebc7daf0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_user_in_attributes import JsonApiUserInAttributes -from gooddata_api_client.models.json_api_user_in_relationships import JsonApiUserInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserPatch(BaseModel): - """ - JSON:API representation of patching user entity. - """ # noqa: E501 - attributes: Optional[JsonApiUserInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiUserInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['user']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('user')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiUserInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiUserInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_patch_document.py deleted file mode 100644 index 7b5aac030..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_patch import JsonApiUserPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserPatchDocument(BaseModel): - """ - JsonApiUserPatchDocument - """ # noqa: E501 - data: JsonApiUserPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in.py deleted file mode 100644 index 81562682a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserSettingIn(BaseModel): - """ - JSON:API representation of userSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserSettingIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserSettingIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in_document.py deleted file mode 100644 index 18e18b2e5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_user_setting_in import JsonApiUserSettingIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserSettingInDocument(BaseModel): - """ - JsonApiUserSettingInDocument - """ # noqa: E501 - data: JsonApiUserSettingIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserSettingInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserSettingInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserSettingIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out.py deleted file mode 100644 index d5599091d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserSettingOut(BaseModel): - """ - JSON:API representation of userSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_document.py deleted file mode 100644 index 24da48ce3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_user_setting_out import JsonApiUserSettingOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserSettingOutDocument(BaseModel): - """ - JsonApiUserSettingOutDocument - """ # noqa: E501 - data: JsonApiUserSettingOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiUserSettingOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_list.py deleted file mode 100644 index 175329b16..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_user_setting_out_with_links import JsonApiUserSettingOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserSettingOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiUserSettingOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiUserSettingOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_with_links.py deleted file mode 100644 index 6c1c51d24..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_setting_out_with_links.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiUserSettingOutWithLinks(BaseModel): - """ - JsonApiUserSettingOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['userSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('userSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiUserSettingOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_user_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_user_to_one_linkage.py deleted file mode 100644 index a9e898bf9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_user_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_user_linkage import JsonApiUserLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIUSERTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiUserLinkage"] - -class JsonApiUserToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiUserLinkage - oneof_schema_1_validator: Optional[JsonApiUserLinkage] = None - actual_instance: Optional[Union[JsonApiUserLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiUserLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiUserToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiUserLinkage - if not isinstance(v, JsonApiUserLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiUserToOneLinkage with oneOf schemas: JsonApiUserLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiUserLinkage - try: - if match == 0: - instance.actual_instance = JsonApiUserLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiUserToOneLinkage with oneOf schemas: JsonApiUserLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiUserLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in.py deleted file mode 100644 index 59df5d2cf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_visualization_object_in_attributes import JsonApiVisualizationObjectInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectIn(BaseModel): - """ - JSON:API representation of visualizationObject entity. - """ # noqa: E501 - attributes: JsonApiVisualizationObjectInAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['visualizationObject']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('visualizationObject')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiVisualizationObjectInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_attributes.py deleted file mode 100644 index d44671787..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_attributes.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectInAttributes(BaseModel): - """ - JsonApiVisualizationObjectInAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "isHidden", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_document.py deleted file mode 100644 index 7e548e585..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_visualization_object_in import JsonApiVisualizationObjectIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectInDocument(BaseModel): - """ - JsonApiVisualizationObjectInDocument - """ # noqa: E501 - data: JsonApiVisualizationObjectIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiVisualizationObjectIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_linkage.py deleted file mode 100644 index a25f4e67f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['visualizationObject']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('visualizationObject')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out.py deleted file mode 100644 index d05d530e4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_metric_out_relationships import JsonApiMetricOutRelationships -from gooddata_api_client.models.json_api_visualization_object_out_attributes import JsonApiVisualizationObjectOutAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectOut(BaseModel): - """ - JSON:API representation of visualizationObject entity. - """ # noqa: E501 - attributes: JsonApiVisualizationObjectOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiMetricOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['visualizationObject']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('visualizationObject')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiVisualizationObjectOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiMetricOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_attributes.py deleted file mode 100644 index 9dab9f8df..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_attributes.py +++ /dev/null @@ -1,177 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectOutAttributes(BaseModel): - """ - JsonApiVisualizationObjectOutAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - certification: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - certification_message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.", alias="certificationMessage") - certified_at: Optional[datetime] = Field(default=None, description="Time when the certification was set.", alias="certifiedAt") - content: Dict[str, Any] = Field(description="Free-form JSON content. Maximum supported length is 250000 characters.") - created_at: Optional[datetime] = Field(default=None, description="Time of the entity creation.", alias="createdAt") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - modified_at: Optional[datetime] = Field(default=None, description="Time of the last entity modification.", alias="modifiedAt") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "certification", "certificationMessage", "certifiedAt", "content", "createdAt", "description", "isHidden", "modifiedAt", "tags", "title"] - - @field_validator('certification') - def certification_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('certified_at') - def certified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('created_at') - def created_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - @field_validator('modified_at') - def modified_at_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not isinstance(value, str): - value = str(value) - if not re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}", value): - raise ValueError(r"must validate the regular expression /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if certification_message (nullable) is None - # and model_fields_set contains the field - if self.certification_message is None and "certification_message" in self.model_fields_set: - _dict['certificationMessage'] = None - - # set to None if certified_at (nullable) is None - # and model_fields_set contains the field - if self.certified_at is None and "certified_at" in self.model_fields_set: - _dict['certifiedAt'] = None - - # set to None if created_at (nullable) is None - # and model_fields_set contains the field - if self.created_at is None and "created_at" in self.model_fields_set: - _dict['createdAt'] = None - - # set to None if modified_at (nullable) is None - # and model_fields_set contains the field - if self.modified_at is None and "modified_at" in self.model_fields_set: - _dict['modifiedAt'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "certification": obj.get("certification"), - "certificationMessage": obj.get("certificationMessage"), - "certifiedAt": obj.get("certifiedAt"), - "content": obj.get("content"), - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "modifiedAt": obj.get("modifiedAt"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_document.py deleted file mode 100644 index 60360045a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_metric_out_includes import JsonApiMetricOutIncludes -from gooddata_api_client.models.json_api_visualization_object_out import JsonApiVisualizationObjectOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectOutDocument(BaseModel): - """ - JsonApiVisualizationObjectOutDocument - """ # noqa: E501 - data: JsonApiVisualizationObjectOut - included: Optional[List[JsonApiMetricOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiVisualizationObjectOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiMetricOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_list.py deleted file mode 100644 index e8401b97c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_metric_out_includes import JsonApiMetricOutIncludes -from gooddata_api_client.models.json_api_visualization_object_out_with_links import JsonApiVisualizationObjectOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiVisualizationObjectOutWithLinks] - included: Optional[List[JsonApiMetricOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiVisualizationObjectOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiMetricOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_with_links.py deleted file mode 100644 index 8f9748124..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_metric_out_relationships import JsonApiMetricOutRelationships -from gooddata_api_client.models.json_api_visualization_object_out_attributes import JsonApiVisualizationObjectOutAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectOutWithLinks(BaseModel): - """ - JsonApiVisualizationObjectOutWithLinks - """ # noqa: E501 - attributes: JsonApiVisualizationObjectOutAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiMetricOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['visualizationObject']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('visualizationObject')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiVisualizationObjectOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiMetricOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch.py deleted file mode 100644 index 2c3d1f7f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_visualization_object_patch_attributes import JsonApiVisualizationObjectPatchAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectPatch(BaseModel): - """ - JSON:API representation of patching visualizationObject entity. - """ # noqa: E501 - attributes: JsonApiVisualizationObjectPatchAttributes - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['visualizationObject']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('visualizationObject')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiVisualizationObjectPatchAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_attributes.py deleted file mode 100644 index 5e3396754..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_attributes.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectPatchAttributes(BaseModel): - """ - JsonApiVisualizationObjectPatchAttributes - """ # noqa: E501 - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON content. Maximum supported length is 250000 characters.") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["areRelationsValid", "content", "description", "isHidden", "tags", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPatchAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPatchAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "areRelationsValid": obj.get("areRelationsValid"), - "content": obj.get("content"), - "description": obj.get("description"), - "isHidden": obj.get("isHidden"), - "tags": obj.get("tags"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_document.py deleted file mode 100644 index 5ccb7b6eb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_visualization_object_patch import JsonApiVisualizationObjectPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectPatchDocument(BaseModel): - """ - JsonApiVisualizationObjectPatchDocument - """ # noqa: E501 - data: JsonApiVisualizationObjectPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiVisualizationObjectPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id.py deleted file mode 100644 index 0395016b2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_visualization_object_in_attributes import JsonApiVisualizationObjectInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectPostOptionalId(BaseModel): - """ - JSON:API representation of visualizationObject entity. - """ # noqa: E501 - attributes: JsonApiVisualizationObjectInAttributes - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['visualizationObject']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('visualizationObject')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiVisualizationObjectInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id_document.py deleted file mode 100644 index 600e46958..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_visualization_object_post_optional_id import JsonApiVisualizationObjectPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiVisualizationObjectPostOptionalIdDocument(BaseModel): - """ - JsonApiVisualizationObjectPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiVisualizationObjectPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiVisualizationObjectPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiVisualizationObjectPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_to_one_linkage.py deleted file mode 100644 index 01bb7cb0e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_visualization_object_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_visualization_object_linkage import JsonApiVisualizationObjectLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIVISUALIZATIONOBJECTTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiVisualizationObjectLinkage"] - -class JsonApiVisualizationObjectToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiVisualizationObjectLinkage - oneof_schema_1_validator: Optional[JsonApiVisualizationObjectLinkage] = None - actual_instance: Optional[Union[JsonApiVisualizationObjectLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiVisualizationObjectLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiVisualizationObjectToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiVisualizationObjectLinkage - if not isinstance(v, JsonApiVisualizationObjectLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiVisualizationObjectLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiVisualizationObjectToOneLinkage with oneOf schemas: JsonApiVisualizationObjectLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiVisualizationObjectLinkage - try: - if match == 0: - instance.actual_instance = JsonApiVisualizationObjectLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiVisualizationObjectToOneLinkage with oneOf schemas: JsonApiVisualizationObjectLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiVisualizationObjectLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out.py deleted file mode 100644 index fdd5836a5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_automation_out_attributes import JsonApiWorkspaceAutomationOutAttributes -from gooddata_api_client.models.json_api_workspace_automation_out_relationships import JsonApiWorkspaceAutomationOutRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceAutomationOut(BaseModel): - """ - JSON:API representation of workspaceAutomation entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceAutomationOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceAutomationOutRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceAutomation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceAutomation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceAutomationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceAutomationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_attributes.py deleted file mode 100644 index 4bbe12520..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_attributes.py +++ /dev/null @@ -1,221 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_automation_in_attributes_alert import JsonApiAutomationInAttributesAlert -from gooddata_api_client.models.json_api_automation_in_attributes_dashboard_tabular_exports_inner import JsonApiAutomationInAttributesDashboardTabularExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_external_recipients_inner import JsonApiAutomationInAttributesExternalRecipientsInner -from gooddata_api_client.models.json_api_automation_in_attributes_image_exports_inner import JsonApiAutomationInAttributesImageExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_metadata import JsonApiAutomationInAttributesMetadata -from gooddata_api_client.models.json_api_automation_in_attributes_raw_exports_inner import JsonApiAutomationInAttributesRawExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_schedule import JsonApiAutomationInAttributesSchedule -from gooddata_api_client.models.json_api_automation_in_attributes_slides_exports_inner import JsonApiAutomationInAttributesSlidesExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_tabular_exports_inner import JsonApiAutomationInAttributesTabularExportsInner -from gooddata_api_client.models.json_api_automation_in_attributes_visual_exports_inner import JsonApiAutomationInAttributesVisualExportsInner -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceAutomationOutAttributes(BaseModel): - """ - JsonApiWorkspaceAutomationOutAttributes - """ # noqa: E501 - alert: Optional[JsonApiAutomationInAttributesAlert] = None - are_relations_valid: Optional[StrictBool] = Field(default=None, alias="areRelationsValid") - created_at: Optional[datetime] = Field(default=None, alias="createdAt") - dashboard_tabular_exports: Optional[List[JsonApiAutomationInAttributesDashboardTabularExportsInner]] = Field(default=None, alias="dashboardTabularExports") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - details: Optional[Dict[str, Any]] = Field(default=None, description="Additional details to be included in the automated message.") - evaluation_mode: Optional[StrictStr] = Field(default=None, description="Specify automation evaluation mode.", alias="evaluationMode") - external_recipients: Optional[List[JsonApiAutomationInAttributesExternalRecipientsInner]] = Field(default=None, description="External recipients of the automation action results.", alias="externalRecipients") - image_exports: Optional[List[JsonApiAutomationInAttributesImageExportsInner]] = Field(default=None, alias="imageExports") - metadata: Optional[JsonApiAutomationInAttributesMetadata] = None - modified_at: Optional[datetime] = Field(default=None, alias="modifiedAt") - raw_exports: Optional[List[JsonApiAutomationInAttributesRawExportsInner]] = Field(default=None, alias="rawExports") - schedule: Optional[JsonApiAutomationInAttributesSchedule] = None - slides_exports: Optional[List[JsonApiAutomationInAttributesSlidesExportsInner]] = Field(default=None, alias="slidesExports") - state: Optional[StrictStr] = Field(default=None, description="Current state of the automation.") - tabular_exports: Optional[List[JsonApiAutomationInAttributesTabularExportsInner]] = Field(default=None, alias="tabularExports") - tags: Optional[List[StrictStr]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - visual_exports: Optional[List[JsonApiAutomationInAttributesVisualExportsInner]] = Field(default=None, alias="visualExports") - __properties: ClassVar[List[str]] = ["alert", "areRelationsValid", "createdAt", "dashboardTabularExports", "description", "details", "evaluationMode", "externalRecipients", "imageExports", "metadata", "modifiedAt", "rawExports", "schedule", "slidesExports", "state", "tabularExports", "tags", "title", "visualExports"] - - @field_validator('evaluation_mode') - def evaluation_mode_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SHARED', 'PER_RECIPIENT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SHARED', 'PER_RECIPIENT')") - return value - - @field_validator('state') - def state_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ACTIVE', 'PAUSED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ACTIVE', 'PAUSED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of alert - if self.alert: - _dict['alert'] = self.alert.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_tabular_exports (list) - _items = [] - if self.dashboard_tabular_exports: - for _item_dashboard_tabular_exports in self.dashboard_tabular_exports: - if _item_dashboard_tabular_exports: - _items.append(_item_dashboard_tabular_exports.to_dict()) - _dict['dashboardTabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in external_recipients (list) - _items = [] - if self.external_recipients: - for _item_external_recipients in self.external_recipients: - if _item_external_recipients: - _items.append(_item_external_recipients.to_dict()) - _dict['externalRecipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in image_exports (list) - _items = [] - if self.image_exports: - for _item_image_exports in self.image_exports: - if _item_image_exports: - _items.append(_item_image_exports.to_dict()) - _dict['imageExports'] = _items - # override the default output from pydantic by calling `to_dict()` of metadata - if self.metadata: - _dict['metadata'] = self.metadata.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in raw_exports (list) - _items = [] - if self.raw_exports: - for _item_raw_exports in self.raw_exports: - if _item_raw_exports: - _items.append(_item_raw_exports.to_dict()) - _dict['rawExports'] = _items - # override the default output from pydantic by calling `to_dict()` of schedule - if self.schedule: - _dict['schedule'] = self.schedule.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in slides_exports (list) - _items = [] - if self.slides_exports: - for _item_slides_exports in self.slides_exports: - if _item_slides_exports: - _items.append(_item_slides_exports.to_dict()) - _dict['slidesExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tabular_exports (list) - _items = [] - if self.tabular_exports: - for _item_tabular_exports in self.tabular_exports: - if _item_tabular_exports: - _items.append(_item_tabular_exports.to_dict()) - _dict['tabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visual_exports (list) - _items = [] - if self.visual_exports: - for _item_visual_exports in self.visual_exports: - if _item_visual_exports: - _items.append(_item_visual_exports.to_dict()) - _dict['visualExports'] = _items - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alert": JsonApiAutomationInAttributesAlert.from_dict(obj["alert"]) if obj.get("alert") is not None else None, - "areRelationsValid": obj.get("areRelationsValid"), - "createdAt": obj.get("createdAt"), - "dashboardTabularExports": [JsonApiAutomationInAttributesDashboardTabularExportsInner.from_dict(_item) for _item in obj["dashboardTabularExports"]] if obj.get("dashboardTabularExports") is not None else None, - "description": obj.get("description"), - "details": obj.get("details"), - "evaluationMode": obj.get("evaluationMode"), - "externalRecipients": [JsonApiAutomationInAttributesExternalRecipientsInner.from_dict(_item) for _item in obj["externalRecipients"]] if obj.get("externalRecipients") is not None else None, - "imageExports": [JsonApiAutomationInAttributesImageExportsInner.from_dict(_item) for _item in obj["imageExports"]] if obj.get("imageExports") is not None else None, - "metadata": JsonApiAutomationInAttributesMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, - "modifiedAt": obj.get("modifiedAt"), - "rawExports": [JsonApiAutomationInAttributesRawExportsInner.from_dict(_item) for _item in obj["rawExports"]] if obj.get("rawExports") is not None else None, - "schedule": JsonApiAutomationInAttributesSchedule.from_dict(obj["schedule"]) if obj.get("schedule") is not None else None, - "slidesExports": [JsonApiAutomationInAttributesSlidesExportsInner.from_dict(_item) for _item in obj["slidesExports"]] if obj.get("slidesExports") is not None else None, - "state": obj.get("state"), - "tabularExports": [JsonApiAutomationInAttributesTabularExportsInner.from_dict(_item) for _item in obj["tabularExports"]] if obj.get("tabularExports") is not None else None, - "tags": obj.get("tags"), - "title": obj.get("title"), - "visualExports": [JsonApiAutomationInAttributesVisualExportsInner.from_dict(_item) for _item in obj["visualExports"]] if obj.get("visualExports") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_includes.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_includes.py deleted file mode 100644 index a2fc105b1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_includes.py +++ /dev/null @@ -1,216 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_with_links import JsonApiAnalyticalDashboardOutWithLinks -from gooddata_api_client.models.json_api_automation_result_out_with_links import JsonApiAutomationResultOutWithLinks -from gooddata_api_client.models.json_api_export_definition_out_with_links import JsonApiExportDefinitionOutWithLinks -from gooddata_api_client.models.json_api_notification_channel_out_with_links import JsonApiNotificationChannelOutWithLinks -from gooddata_api_client.models.json_api_user_identifier_out_with_links import JsonApiUserIdentifierOutWithLinks -from gooddata_api_client.models.json_api_user_out_with_links import JsonApiUserOutWithLinks -from gooddata_api_client.models.json_api_workspace_out_with_links import JsonApiWorkspaceOutWithLinks -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIWORKSPACEAUTOMATIONOUTINCLUDES_ONE_OF_SCHEMAS = ["JsonApiAnalyticalDashboardOutWithLinks", "JsonApiAutomationResultOutWithLinks", "JsonApiExportDefinitionOutWithLinks", "JsonApiNotificationChannelOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiUserOutWithLinks", "JsonApiWorkspaceOutWithLinks"] - -class JsonApiWorkspaceAutomationOutIncludes(BaseModel): - """ - JsonApiWorkspaceAutomationOutIncludes - """ - # data type: JsonApiWorkspaceOutWithLinks - oneof_schema_1_validator: Optional[JsonApiWorkspaceOutWithLinks] = None - # data type: JsonApiNotificationChannelOutWithLinks - oneof_schema_2_validator: Optional[JsonApiNotificationChannelOutWithLinks] = None - # data type: JsonApiAnalyticalDashboardOutWithLinks - oneof_schema_3_validator: Optional[JsonApiAnalyticalDashboardOutWithLinks] = None - # data type: JsonApiUserIdentifierOutWithLinks - oneof_schema_4_validator: Optional[JsonApiUserIdentifierOutWithLinks] = None - # data type: JsonApiExportDefinitionOutWithLinks - oneof_schema_5_validator: Optional[JsonApiExportDefinitionOutWithLinks] = None - # data type: JsonApiUserOutWithLinks - oneof_schema_6_validator: Optional[JsonApiUserOutWithLinks] = None - # data type: JsonApiAutomationResultOutWithLinks - oneof_schema_7_validator: Optional[JsonApiAutomationResultOutWithLinks] = None - actual_instance: Optional[Union[JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks, JsonApiWorkspaceOutWithLinks]] = None - one_of_schemas: Set[str] = { "JsonApiAnalyticalDashboardOutWithLinks", "JsonApiAutomationResultOutWithLinks", "JsonApiExportDefinitionOutWithLinks", "JsonApiNotificationChannelOutWithLinks", "JsonApiUserIdentifierOutWithLinks", "JsonApiUserOutWithLinks", "JsonApiWorkspaceOutWithLinks" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = JsonApiWorkspaceAutomationOutIncludes.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiWorkspaceOutWithLinks - if not isinstance(v, JsonApiWorkspaceOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiWorkspaceOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiNotificationChannelOutWithLinks - if not isinstance(v, JsonApiNotificationChannelOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiNotificationChannelOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAnalyticalDashboardOutWithLinks - if not isinstance(v, JsonApiAnalyticalDashboardOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAnalyticalDashboardOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserIdentifierOutWithLinks - if not isinstance(v, JsonApiUserIdentifierOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserIdentifierOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiExportDefinitionOutWithLinks - if not isinstance(v, JsonApiExportDefinitionOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiExportDefinitionOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiUserOutWithLinks - if not isinstance(v, JsonApiUserOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiUserOutWithLinks`") - else: - match += 1 - # validate data type: JsonApiAutomationResultOutWithLinks - if not isinstance(v, JsonApiAutomationResultOutWithLinks): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiAutomationResultOutWithLinks`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiWorkspaceAutomationOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks, JsonApiWorkspaceOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into JsonApiWorkspaceOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiWorkspaceOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiNotificationChannelOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiNotificationChannelOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAnalyticalDashboardOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAnalyticalDashboardOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserIdentifierOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserIdentifierOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiExportDefinitionOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiExportDefinitionOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiUserOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiUserOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into JsonApiAutomationResultOutWithLinks - try: - if match == 0: - instance.actual_instance = JsonApiAutomationResultOutWithLinks.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiWorkspaceAutomationOutIncludes with oneOf schemas: JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks, JsonApiWorkspaceOutWithLinks. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiAnalyticalDashboardOutWithLinks, JsonApiAutomationResultOutWithLinks, JsonApiExportDefinitionOutWithLinks, JsonApiNotificationChannelOutWithLinks, JsonApiUserIdentifierOutWithLinks, JsonApiUserOutWithLinks, JsonApiWorkspaceOutWithLinks]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_list.py deleted file mode 100644 index b981f5a92..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_workspace_automation_out_includes import JsonApiWorkspaceAutomationOutIncludes -from gooddata_api_client.models.json_api_workspace_automation_out_with_links import JsonApiWorkspaceAutomationOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceAutomationOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiWorkspaceAutomationOutWithLinks] - included: Optional[List[JsonApiWorkspaceAutomationOutIncludes]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceAutomationOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceAutomationOutIncludes.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships.py deleted file mode 100644 index ffc8187bd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships.py +++ /dev/null @@ -1,133 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_analytical_dashboard_out_relationships_certified_by import JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy -from gooddata_api_client.models.json_api_automation_in_relationships_analytical_dashboard import JsonApiAutomationInRelationshipsAnalyticalDashboard -from gooddata_api_client.models.json_api_automation_in_relationships_export_definitions import JsonApiAutomationInRelationshipsExportDefinitions -from gooddata_api_client.models.json_api_automation_in_relationships_notification_channel import JsonApiAutomationInRelationshipsNotificationChannel -from gooddata_api_client.models.json_api_automation_in_relationships_recipients import JsonApiAutomationInRelationshipsRecipients -from gooddata_api_client.models.json_api_automation_out_relationships_automation_results import JsonApiAutomationOutRelationshipsAutomationResults -from gooddata_api_client.models.json_api_workspace_automation_out_relationships_workspace import JsonApiWorkspaceAutomationOutRelationshipsWorkspace -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceAutomationOutRelationships(BaseModel): - """ - JsonApiWorkspaceAutomationOutRelationships - """ # noqa: E501 - analytical_dashboard: Optional[JsonApiAutomationInRelationshipsAnalyticalDashboard] = Field(default=None, alias="analyticalDashboard") - automation_results: Optional[JsonApiAutomationOutRelationshipsAutomationResults] = Field(default=None, alias="automationResults") - created_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="createdBy") - export_definitions: Optional[JsonApiAutomationInRelationshipsExportDefinitions] = Field(default=None, alias="exportDefinitions") - modified_by: Optional[JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy] = Field(default=None, alias="modifiedBy") - notification_channel: Optional[JsonApiAutomationInRelationshipsNotificationChannel] = Field(default=None, alias="notificationChannel") - recipients: Optional[JsonApiAutomationInRelationshipsRecipients] = None - workspace: Optional[JsonApiWorkspaceAutomationOutRelationshipsWorkspace] = None - __properties: ClassVar[List[str]] = ["analyticalDashboard", "automationResults", "createdBy", "exportDefinitions", "modifiedBy", "notificationChannel", "recipients", "workspace"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of analytical_dashboard - if self.analytical_dashboard: - _dict['analyticalDashboard'] = self.analytical_dashboard.to_dict() - # override the default output from pydantic by calling `to_dict()` of automation_results - if self.automation_results: - _dict['automationResults'] = self.automation_results.to_dict() - # override the default output from pydantic by calling `to_dict()` of created_by - if self.created_by: - _dict['createdBy'] = self.created_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of export_definitions - if self.export_definitions: - _dict['exportDefinitions'] = self.export_definitions.to_dict() - # override the default output from pydantic by calling `to_dict()` of modified_by - if self.modified_by: - _dict['modifiedBy'] = self.modified_by.to_dict() - # override the default output from pydantic by calling `to_dict()` of notification_channel - if self.notification_channel: - _dict['notificationChannel'] = self.notification_channel.to_dict() - # override the default output from pydantic by calling `to_dict()` of recipients - if self.recipients: - _dict['recipients'] = self.recipients.to_dict() - # override the default output from pydantic by calling `to_dict()` of workspace - if self.workspace: - _dict['workspace'] = self.workspace.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "analyticalDashboard": JsonApiAutomationInRelationshipsAnalyticalDashboard.from_dict(obj["analyticalDashboard"]) if obj.get("analyticalDashboard") is not None else None, - "automationResults": JsonApiAutomationOutRelationshipsAutomationResults.from_dict(obj["automationResults"]) if obj.get("automationResults") is not None else None, - "createdBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["createdBy"]) if obj.get("createdBy") is not None else None, - "exportDefinitions": JsonApiAutomationInRelationshipsExportDefinitions.from_dict(obj["exportDefinitions"]) if obj.get("exportDefinitions") is not None else None, - "modifiedBy": JsonApiAnalyticalDashboardOutRelationshipsCertifiedBy.from_dict(obj["modifiedBy"]) if obj.get("modifiedBy") is not None else None, - "notificationChannel": JsonApiAutomationInRelationshipsNotificationChannel.from_dict(obj["notificationChannel"]) if obj.get("notificationChannel") is not None else None, - "recipients": JsonApiAutomationInRelationshipsRecipients.from_dict(obj["recipients"]) if obj.get("recipients") is not None else None, - "workspace": JsonApiWorkspaceAutomationOutRelationshipsWorkspace.from_dict(obj["workspace"]) if obj.get("workspace") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships_workspace.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships_workspace.py deleted file mode 100644 index 71fe092ba..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_relationships_workspace.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_to_one_linkage import JsonApiWorkspaceToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceAutomationOutRelationshipsWorkspace(BaseModel): - """ - JsonApiWorkspaceAutomationOutRelationshipsWorkspace - """ # noqa: E501 - data: Optional[JsonApiWorkspaceToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutRelationshipsWorkspace from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutRelationshipsWorkspace from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_with_links.py deleted file mode 100644 index eb78baf83..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_automation_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_automation_out_attributes import JsonApiWorkspaceAutomationOutAttributes -from gooddata_api_client.models.json_api_workspace_automation_out_relationships import JsonApiWorkspaceAutomationOutRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceAutomationOutWithLinks(BaseModel): - """ - JsonApiWorkspaceAutomationOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceAutomationOutAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceAutomationOutRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceAutomation']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceAutomation')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceAutomationOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceAutomationOutAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceAutomationOutRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in.py deleted file mode 100644 index fa769a1f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_data_filter_in_attributes import JsonApiWorkspaceDataFilterInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_in_relationships import JsonApiWorkspaceDataFilterInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterIn(BaseModel): - """ - JSON:API representation of workspaceDataFilter entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_attributes.py deleted file mode 100644 index 7d8e64436..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_attributes.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterInAttributes(BaseModel): - """ - JsonApiWorkspaceDataFilterInAttributes - """ # noqa: E501 - column_name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, alias="columnName") - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["columnName", "description", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columnName": obj.get("columnName"), - "description": obj.get("description"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_document.py deleted file mode 100644 index f2d94c5fb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_data_filter_in import JsonApiWorkspaceDataFilterIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterInDocument(BaseModel): - """ - JsonApiWorkspaceDataFilterInDocument - """ # noqa: E501 - data: JsonApiWorkspaceDataFilterIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships.py deleted file mode 100644 index 910ba58d3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_data_filter_in_relationships_filter_settings import JsonApiWorkspaceDataFilterInRelationshipsFilterSettings -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterInRelationships(BaseModel): - """ - JsonApiWorkspaceDataFilterInRelationships - """ # noqa: E501 - filter_settings: Optional[JsonApiWorkspaceDataFilterInRelationshipsFilterSettings] = Field(default=None, alias="filterSettings") - __properties: ClassVar[List[str]] = ["filterSettings"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of filter_settings - if self.filter_settings: - _dict['filterSettings'] = self.filter_settings.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filterSettings": JsonApiWorkspaceDataFilterInRelationshipsFilterSettings.from_dict(obj["filterSettings"]) if obj.get("filterSettings") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships_filter_settings.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships_filter_settings.py deleted file mode 100644 index ad8023518..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_in_relationships_filter_settings.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_data_filter_setting_linkage import JsonApiWorkspaceDataFilterSettingLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterInRelationshipsFilterSettings(BaseModel): - """ - JsonApiWorkspaceDataFilterInRelationshipsFilterSettings - """ # noqa: E501 - data: List[JsonApiWorkspaceDataFilterSettingLinkage] = Field(description="References to other resource objects in a to-many (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object.") - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInRelationshipsFilterSettings from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterInRelationshipsFilterSettings from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceDataFilterSettingLinkage.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_linkage.py deleted file mode 100644 index d36e39ce2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out.py deleted file mode 100644 index fb18d498d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_workspace_data_filter_in_attributes import JsonApiWorkspaceDataFilterInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_in_relationships import JsonApiWorkspaceDataFilterInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterOut(BaseModel): - """ - JSON:API representation of workspaceDataFilter entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiWorkspaceDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiWorkspaceDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_document.py deleted file mode 100644 index 0a9728fe3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_data_filter_out import JsonApiWorkspaceDataFilterOut -from gooddata_api_client.models.json_api_workspace_data_filter_setting_out_with_links import JsonApiWorkspaceDataFilterSettingOutWithLinks -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterOutDocument(BaseModel): - """ - JsonApiWorkspaceDataFilterOutDocument - """ # noqa: E501 - data: JsonApiWorkspaceDataFilterOut - included: Optional[List[JsonApiWorkspaceDataFilterSettingOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceDataFilterSettingOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_list.py deleted file mode 100644 index 3b2f5d115..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_workspace_data_filter_out_with_links import JsonApiWorkspaceDataFilterOutWithLinks -from gooddata_api_client.models.json_api_workspace_data_filter_setting_out_with_links import JsonApiWorkspaceDataFilterSettingOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiWorkspaceDataFilterOutWithLinks] - included: Optional[List[JsonApiWorkspaceDataFilterSettingOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceDataFilterOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceDataFilterSettingOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_with_links.py deleted file mode 100644 index 5b0978bc5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_workspace_data_filter_in_attributes import JsonApiWorkspaceDataFilterInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_in_relationships import JsonApiWorkspaceDataFilterInRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterOutWithLinks(BaseModel): - """ - JsonApiWorkspaceDataFilterOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiWorkspaceDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiWorkspaceDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch.py deleted file mode 100644 index 5bb9eafc2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_data_filter_in_attributes import JsonApiWorkspaceDataFilterInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_in_relationships import JsonApiWorkspaceDataFilterInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterPatch(BaseModel): - """ - JSON:API representation of patching workspaceDataFilter entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceDataFilterInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilter']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilter')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceDataFilterInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch_document.py deleted file mode 100644 index 1bdde7794..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_data_filter_patch import JsonApiWorkspaceDataFilterPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterPatchDocument(BaseModel): - """ - JsonApiWorkspaceDataFilterPatchDocument - """ # noqa: E501 - data: JsonApiWorkspaceDataFilterPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in.py deleted file mode 100644 index fc4d3a972..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_attributes import JsonApiWorkspaceDataFilterSettingInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_relationships import JsonApiWorkspaceDataFilterSettingInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingIn(BaseModel): - """ - JSON:API representation of workspaceDataFilterSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceDataFilterSettingInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilterSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilterSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceDataFilterSettingInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_attributes.py deleted file mode 100644 index f0f8b5871..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_attributes.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingInAttributes(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingInAttributes - """ # noqa: E501 - description: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = None - filter_values: Optional[List[StrictStr]] = Field(default=None, alias="filterValues") - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - __properties: ClassVar[List[str]] = ["description", "filterValues", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "description": obj.get("description"), - "filterValues": obj.get("filterValues"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_document.py deleted file mode 100644 index 85a723a8e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in import JsonApiWorkspaceDataFilterSettingIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingInDocument(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingInDocument - """ # noqa: E501 - data: JsonApiWorkspaceDataFilterSettingIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterSettingIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships.py deleted file mode 100644 index 2176d6889..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_relationships_workspace_data_filter import JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingInRelationships(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingInRelationships - """ # noqa: E501 - workspace_data_filter: Optional[JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter] = Field(default=None, alias="workspaceDataFilter") - __properties: ClassVar[List[str]] = ["workspaceDataFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of workspace_data_filter - if self.workspace_data_filter: - _dict['workspaceDataFilter'] = self.workspace_data_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "workspaceDataFilter": JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter.from_dict(obj["workspaceDataFilter"]) if obj.get("workspaceDataFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships_workspace_data_filter.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships_workspace_data_filter.py deleted file mode 100644 index 2b6fbf948..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_in_relationships_workspace_data_filter.py +++ /dev/null @@ -1,97 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_data_filter_to_one_linkage import JsonApiWorkspaceDataFilterToOneLinkage -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter - """ # noqa: E501 - data: Optional[JsonApiWorkspaceDataFilterToOneLinkage] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # set to None if data (nullable) is None - # and model_fields_set contains the field - if self.data is None and "data" in self.model_fields_set: - _dict['data'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingInRelationshipsWorkspaceDataFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterToOneLinkage.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_linkage.py deleted file mode 100644 index d7b645a7f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilterSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilterSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out.py deleted file mode 100644 index 1d67a8f5f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_attributes import JsonApiWorkspaceDataFilterSettingInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_relationships import JsonApiWorkspaceDataFilterSettingInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingOut(BaseModel): - """ - JSON:API representation of workspaceDataFilterSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiWorkspaceDataFilterSettingInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilterSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilterSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiWorkspaceDataFilterSettingInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_document.py deleted file mode 100644 index 62364c61f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_data_filter_out_with_links import JsonApiWorkspaceDataFilterOutWithLinks -from gooddata_api_client.models.json_api_workspace_data_filter_setting_out import JsonApiWorkspaceDataFilterSettingOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingOutDocument(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingOutDocument - """ # noqa: E501 - data: JsonApiWorkspaceDataFilterSettingOut - included: Optional[List[JsonApiWorkspaceDataFilterOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterSettingOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceDataFilterOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_list.py deleted file mode 100644 index 0d7c6bc70..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_list.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_workspace_data_filter_out_with_links import JsonApiWorkspaceDataFilterOutWithLinks -from gooddata_api_client.models.json_api_workspace_data_filter_setting_out_with_links import JsonApiWorkspaceDataFilterSettingOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiWorkspaceDataFilterSettingOutWithLinks] - included: Optional[List[JsonApiWorkspaceDataFilterOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceDataFilterSettingOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceDataFilterOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_with_links.py deleted file mode 100644 index 73ea734e7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_attributes import JsonApiWorkspaceDataFilterSettingInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_relationships import JsonApiWorkspaceDataFilterSettingInRelationships -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingOutWithLinks(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - relationships: Optional[JsonApiWorkspaceDataFilterSettingInRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilterSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilterSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiWorkspaceDataFilterSettingInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch.py deleted file mode 100644 index afe03b0cb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_attributes import JsonApiWorkspaceDataFilterSettingInAttributes -from gooddata_api_client.models.json_api_workspace_data_filter_setting_in_relationships import JsonApiWorkspaceDataFilterSettingInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingPatch(BaseModel): - """ - JSON:API representation of patching workspaceDataFilterSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceDataFilterSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceDataFilterSettingInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceDataFilterSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceDataFilterSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceDataFilterSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceDataFilterSettingInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch_document.py deleted file mode 100644 index 41623b6d5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_setting_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_data_filter_setting_patch import JsonApiWorkspaceDataFilterSettingPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceDataFilterSettingPatchDocument(BaseModel): - """ - JsonApiWorkspaceDataFilterSettingPatchDocument - """ # noqa: E501 - data: JsonApiWorkspaceDataFilterSettingPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceDataFilterSettingPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceDataFilterSettingPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_to_one_linkage.py deleted file mode 100644 index 1ab4b0efb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_data_filter_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_workspace_data_filter_linkage import JsonApiWorkspaceDataFilterLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIWORKSPACEDATAFILTERTOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiWorkspaceDataFilterLinkage"] - -class JsonApiWorkspaceDataFilterToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiWorkspaceDataFilterLinkage - oneof_schema_1_validator: Optional[JsonApiWorkspaceDataFilterLinkage] = None - actual_instance: Optional[Union[JsonApiWorkspaceDataFilterLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiWorkspaceDataFilterLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiWorkspaceDataFilterToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiWorkspaceDataFilterLinkage - if not isinstance(v, JsonApiWorkspaceDataFilterLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiWorkspaceDataFilterLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiWorkspaceDataFilterToOneLinkage with oneOf schemas: JsonApiWorkspaceDataFilterLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiWorkspaceDataFilterLinkage - try: - if match == 0: - instance.actual_instance = JsonApiWorkspaceDataFilterLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiWorkspaceDataFilterToOneLinkage with oneOf schemas: JsonApiWorkspaceDataFilterLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiWorkspaceDataFilterLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in.py deleted file mode 100644 index aafac8078..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_in_attributes import JsonApiWorkspaceInAttributes -from gooddata_api_client.models.json_api_workspace_in_relationships import JsonApiWorkspaceInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceIn(BaseModel): - """ - JSON:API representation of workspace entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspace']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspace')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes.py deleted file mode 100644 index ebc7f93de..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes.py +++ /dev/null @@ -1,140 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_in_attributes_data_source import JsonApiWorkspaceInAttributesDataSource -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceInAttributes(BaseModel): - """ - JsonApiWorkspaceInAttributes - """ # noqa: E501 - cache_extra_limit: Optional[StrictInt] = Field(default=None, alias="cacheExtraLimit") - data_source: Optional[JsonApiWorkspaceInAttributesDataSource] = Field(default=None, alias="dataSource") - description: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - early_access: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The early access feature identifier. It is used to enable experimental features. Deprecated in favor of earlyAccessValues.", alias="earlyAccess") - early_access_values: Optional[List[Annotated[str, Field(strict=True, max_length=255)]]] = Field(default=None, description="The early access feature identifiers. They are used to enable experimental features.", alias="earlyAccessValues") - name: Optional[Annotated[str, Field(strict=True, max_length=255)]] = None - prefix: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Custom prefix of entity identifiers in workspace") - __properties: ClassVar[List[str]] = ["cacheExtraLimit", "dataSource", "description", "earlyAccess", "earlyAccessValues", "name", "prefix"] - - @field_validator('prefix') - def prefix_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInAttributes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data_source - if self.data_source: - _dict['dataSource'] = self.data_source.to_dict() - # set to None if description (nullable) is None - # and model_fields_set contains the field - if self.description is None and "description" in self.model_fields_set: - _dict['description'] = None - - # set to None if early_access (nullable) is None - # and model_fields_set contains the field - if self.early_access is None and "early_access" in self.model_fields_set: - _dict['earlyAccess'] = None - - # set to None if early_access_values (nullable) is None - # and model_fields_set contains the field - if self.early_access_values is None and "early_access_values" in self.model_fields_set: - _dict['earlyAccessValues'] = None - - # set to None if name (nullable) is None - # and model_fields_set contains the field - if self.name is None and "name" in self.model_fields_set: - _dict['name'] = None - - # set to None if prefix (nullable) is None - # and model_fields_set contains the field - if self.prefix is None and "prefix" in self.model_fields_set: - _dict['prefix'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInAttributes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "cacheExtraLimit": obj.get("cacheExtraLimit"), - "dataSource": JsonApiWorkspaceInAttributesDataSource.from_dict(obj["dataSource"]) if obj.get("dataSource") is not None else None, - "description": obj.get("description"), - "earlyAccess": obj.get("earlyAccess"), - "earlyAccessValues": obj.get("earlyAccessValues"), - "name": obj.get("name"), - "prefix": obj.get("prefix") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes_data_source.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes_data_source.py deleted file mode 100644 index c96d368e5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_attributes_data_source.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceInAttributesDataSource(BaseModel): - """ - The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace. - """ # noqa: E501 - id: StrictStr = Field(description="The ID of the used data source.") - schema_path: Optional[List[StrictStr]] = Field(default=None, description="The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", alias="schemaPath") - __properties: ClassVar[List[str]] = ["id", "schemaPath"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInAttributesDataSource from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInAttributesDataSource from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "schemaPath": obj.get("schemaPath") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_document.py deleted file mode 100644 index 4f212d49e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_in import JsonApiWorkspaceIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceInDocument(BaseModel): - """ - JsonApiWorkspaceInDocument - """ # noqa: E501 - data: JsonApiWorkspaceIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_relationships.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_relationships.py deleted file mode 100644 index 7e5a97649..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_in_relationships.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_automation_out_relationships_workspace import JsonApiWorkspaceAutomationOutRelationshipsWorkspace -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceInRelationships(BaseModel): - """ - JsonApiWorkspaceInRelationships - """ # noqa: E501 - parent: Optional[JsonApiWorkspaceAutomationOutRelationshipsWorkspace] = None - __properties: ClassVar[List[str]] = ["parent"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInRelationships from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of parent - if self.parent: - _dict['parent'] = self.parent.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceInRelationships from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "parent": JsonApiWorkspaceAutomationOutRelationshipsWorkspace.from_dict(obj["parent"]) if obj.get("parent") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_linkage.py deleted file mode 100644 index 951db8a2b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_linkage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceLinkage(BaseModel): - """ - The \\\"type\\\" and \\\"id\\\" to non-empty members. - """ # noqa: E501 - id: StrictStr - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspace']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspace')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceLinkage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceLinkage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out.py deleted file mode 100644 index 989f56397..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_in_attributes import JsonApiWorkspaceInAttributes -from gooddata_api_client.models.json_api_workspace_in_relationships import JsonApiWorkspaceInRelationships -from gooddata_api_client.models.json_api_workspace_out_meta import JsonApiWorkspaceOutMeta -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOut(BaseModel): - """ - JSON:API representation of workspace entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiWorkspaceOutMeta] = None - relationships: Optional[JsonApiWorkspaceInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspace']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspace')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiWorkspaceOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiWorkspaceInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_document.py deleted file mode 100644 index c9a096933..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_document.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_out import JsonApiWorkspaceOut -from gooddata_api_client.models.json_api_workspace_out_with_links import JsonApiWorkspaceOutWithLinks -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutDocument(BaseModel): - """ - JsonApiWorkspaceOutDocument - """ # noqa: E501 - data: JsonApiWorkspaceOut - included: Optional[List[JsonApiWorkspaceOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "included", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_list.py deleted file mode 100644 index 98e1b9d2d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_list.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_workspace_out_with_links import JsonApiWorkspaceOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiWorkspaceOutWithLinks] - included: Optional[List[JsonApiWorkspaceOutWithLinks]] = Field(default=None, description="Included resources") - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "included", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in included (list) - _items = [] - if self.included: - for _item_included in self.included: - if _item_included: - _items.append(_item_included.to_dict()) - _dict['included'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "included": [JsonApiWorkspaceOutWithLinks.from_dict(_item) for _item in obj["included"]] if obj.get("included") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta.py deleted file mode 100644 index 09486cfbe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_out_meta_config import JsonApiWorkspaceOutMetaConfig -from gooddata_api_client.models.json_api_workspace_out_meta_data_model import JsonApiWorkspaceOutMetaDataModel -from gooddata_api_client.models.json_api_workspace_out_meta_hierarchy import JsonApiWorkspaceOutMetaHierarchy -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutMeta(BaseModel): - """ - JsonApiWorkspaceOutMeta - """ # noqa: E501 - config: Optional[JsonApiWorkspaceOutMetaConfig] = None - data_model: Optional[JsonApiWorkspaceOutMetaDataModel] = Field(default=None, alias="dataModel") - hierarchy: Optional[JsonApiWorkspaceOutMetaHierarchy] = None - permissions: Optional[List[StrictStr]] = Field(default=None, description="List of valid permissions for a logged-in user.") - __properties: ClassVar[List[str]] = ["config", "dataModel", "hierarchy", "permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - raise ValueError("each list item must be one of ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of config - if self.config: - _dict['config'] = self.config.to_dict() - # override the default output from pydantic by calling `to_dict()` of data_model - if self.data_model: - _dict['dataModel'] = self.data_model.to_dict() - # override the default output from pydantic by calling `to_dict()` of hierarchy - if self.hierarchy: - _dict['hierarchy'] = self.hierarchy.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "config": JsonApiWorkspaceOutMetaConfig.from_dict(obj["config"]) if obj.get("config") is not None else None, - "dataModel": JsonApiWorkspaceOutMetaDataModel.from_dict(obj["dataModel"]) if obj.get("dataModel") is not None else None, - "hierarchy": JsonApiWorkspaceOutMetaHierarchy.from_dict(obj["hierarchy"]) if obj.get("hierarchy") is not None else None, - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_config.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_config.py deleted file mode 100644 index 07433563a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_config.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutMetaConfig(BaseModel): - """ - JsonApiWorkspaceOutMetaConfig - """ # noqa: E501 - approximate_count_available: Optional[StrictBool] = Field(default=False, description="is approximate count enabled - based on type of data-source connected to this workspace", alias="approximateCountAvailable") - data_sampling_available: Optional[StrictBool] = Field(default=False, description="is sampling enabled - based on type of data-source connected to this workspace", alias="dataSamplingAvailable") - show_all_values_on_dates_available: Optional[StrictBool] = Field(default=False, description="is 'show all values' displayed for dates - based on type of data-source connected to this workspace", alias="showAllValuesOnDatesAvailable") - __properties: ClassVar[List[str]] = ["approximateCountAvailable", "dataSamplingAvailable", "showAllValuesOnDatesAvailable"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMetaConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMetaConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "approximateCountAvailable": obj.get("approximateCountAvailable") if obj.get("approximateCountAvailable") is not None else False, - "dataSamplingAvailable": obj.get("dataSamplingAvailable") if obj.get("dataSamplingAvailable") is not None else False, - "showAllValuesOnDatesAvailable": obj.get("showAllValuesOnDatesAvailable") if obj.get("showAllValuesOnDatesAvailable") is not None else False - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_data_model.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_data_model.py deleted file mode 100644 index 23c8045b0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_data_model.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutMetaDataModel(BaseModel): - """ - JsonApiWorkspaceOutMetaDataModel - """ # noqa: E501 - dataset_count: StrictInt = Field(description="include the number of dataset of each workspace", alias="datasetCount") - __properties: ClassVar[List[str]] = ["datasetCount"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMetaDataModel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMetaDataModel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "datasetCount": obj.get("datasetCount") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_hierarchy.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_hierarchy.py deleted file mode 100644 index 460ce3696..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_meta_hierarchy.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutMetaHierarchy(BaseModel): - """ - JsonApiWorkspaceOutMetaHierarchy - """ # noqa: E501 - children_count: StrictInt = Field(description="include the number of direct children of each workspace", alias="childrenCount") - __properties: ClassVar[List[str]] = ["childrenCount"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMetaHierarchy from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutMetaHierarchy from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "childrenCount": obj.get("childrenCount") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_with_links.py deleted file mode 100644 index b623b1c8a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_out_with_links.py +++ /dev/null @@ -1,130 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_in_attributes import JsonApiWorkspaceInAttributes -from gooddata_api_client.models.json_api_workspace_in_relationships import JsonApiWorkspaceInRelationships -from gooddata_api_client.models.json_api_workspace_out_meta import JsonApiWorkspaceOutMeta -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceOutWithLinks(BaseModel): - """ - JsonApiWorkspaceOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiWorkspaceOutMeta] = None - relationships: Optional[JsonApiWorkspaceInRelationships] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "relationships", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspace']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspace')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiWorkspaceOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "relationships": JsonApiWorkspaceInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch.py deleted file mode 100644 index de006a8db..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_workspace_in_attributes import JsonApiWorkspaceInAttributes -from gooddata_api_client.models.json_api_workspace_in_relationships import JsonApiWorkspaceInRelationships -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspacePatch(BaseModel): - """ - JSON:API representation of patching workspace entity. - """ # noqa: E501 - attributes: Optional[JsonApiWorkspaceInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - relationships: Optional[JsonApiWorkspaceInRelationships] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "relationships", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspace']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspace')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspacePatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of relationships - if self.relationships: - _dict['relationships'] = self.relationships.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspacePatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiWorkspaceInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "relationships": JsonApiWorkspaceInRelationships.from_dict(obj["relationships"]) if obj.get("relationships") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch_document.py deleted file mode 100644 index dc00bd121..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_patch import JsonApiWorkspacePatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspacePatchDocument(BaseModel): - """ - JsonApiWorkspacePatchDocument - """ # noqa: E501 - data: JsonApiWorkspacePatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspacePatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspacePatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspacePatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in.py deleted file mode 100644 index 86a0251d1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingIn(BaseModel): - """ - JSON:API representation of workspaceSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingIn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingIn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in_document.py deleted file mode 100644 index 3d569b11e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_in_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_setting_in import JsonApiWorkspaceSettingIn -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingInDocument(BaseModel): - """ - JsonApiWorkspaceSettingInDocument - """ # noqa: E501 - data: JsonApiWorkspaceSettingIn - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingInDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingInDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceSettingIn.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out.py deleted file mode 100644 index 56c20218b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingOut(BaseModel): - """ - JSON:API representation of workspaceSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOut from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOut from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_document.py deleted file mode 100644 index 8ea6be441..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_document.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_workspace_setting_out import JsonApiWorkspaceSettingOut -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingOutDocument(BaseModel): - """ - JsonApiWorkspaceSettingOutDocument - """ # noqa: E501 - data: JsonApiWorkspaceSettingOut - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["data", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOutDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOutDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceSettingOut.from_dict(obj["data"]) if obj.get("data") is not None else None, - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_list.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_list.py deleted file mode 100644 index 869b6fa4a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_list.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.json_api_aggregated_fact_out_list_meta import JsonApiAggregatedFactOutListMeta -from gooddata_api_client.models.json_api_workspace_setting_out_with_links import JsonApiWorkspaceSettingOutWithLinks -from gooddata_api_client.models.list_links import ListLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingOutList(BaseModel): - """ - A JSON:API document with a list of resources - """ # noqa: E501 - data: List[JsonApiWorkspaceSettingOutWithLinks] - links: Optional[ListLinks] = None - meta: Optional[JsonApiAggregatedFactOutListMeta] = None - __properties: ClassVar[List[str]] = ["data", "links", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOutList from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOutList from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [JsonApiWorkspaceSettingOutWithLinks.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "links": ListLinks.from_dict(obj["links"]) if obj.get("links") is not None else None, - "meta": JsonApiAggregatedFactOutListMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_with_links.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_with_links.py deleted file mode 100644 index 98794aea6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_out_with_links.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_aggregated_fact_out_meta import JsonApiAggregatedFactOutMeta -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingOutWithLinks(BaseModel): - """ - JsonApiWorkspaceSettingOutWithLinks - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - meta: Optional[JsonApiAggregatedFactOutMeta] = None - type: StrictStr = Field(description="Object type") - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["attributes", "id", "meta", "type", "links"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOutWithLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingOutWithLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "meta": JsonApiAggregatedFactOutMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None, - "type": obj.get("type"), - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch.py deleted file mode 100644 index 0c2ca62f4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingPatch(BaseModel): - """ - JSON:API representation of patching workspaceSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Annotated[str, Field(strict=True)] = Field(description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPatch from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPatch from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch_document.py deleted file mode 100644 index 23e59a028..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_patch_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_setting_patch import JsonApiWorkspaceSettingPatch -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingPatchDocument(BaseModel): - """ - JsonApiWorkspaceSettingPatchDocument - """ # noqa: E501 - data: JsonApiWorkspaceSettingPatch - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPatchDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPatchDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceSettingPatch.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id.py deleted file mode 100644 index 9dd1add20..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.json_api_organization_setting_in_attributes import JsonApiOrganizationSettingInAttributes -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingPostOptionalId(BaseModel): - """ - JSON:API representation of workspaceSetting entity. - """ # noqa: E501 - attributes: Optional[JsonApiOrganizationSettingInAttributes] = None - id: Optional[Annotated[str, Field(strict=True)]] = Field(default=None, description="API identifier of an object") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["attributes", "id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspaceSetting']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspaceSetting')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPostOptionalId from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attributes - if self.attributes: - _dict['attributes'] = self.attributes.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPostOptionalId from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": JsonApiOrganizationSettingInAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None, - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id_document.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id_document.py deleted file mode 100644 index f3cfdcb2e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_setting_post_optional_id_document.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.json_api_workspace_setting_post_optional_id import JsonApiWorkspaceSettingPostOptionalId -from typing import Optional, Set -from typing_extensions import Self - -class JsonApiWorkspaceSettingPostOptionalIdDocument(BaseModel): - """ - JsonApiWorkspaceSettingPostOptionalIdDocument - """ # noqa: E501 - data: JsonApiWorkspaceSettingPostOptionalId - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPostOptionalIdDocument from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of JsonApiWorkspaceSettingPostOptionalIdDocument from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": JsonApiWorkspaceSettingPostOptionalId.from_dict(obj["data"]) if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_to_one_linkage.py b/gooddata-api-client/gooddata_api_client/models/json_api_workspace_to_one_linkage.py deleted file mode 100644 index 4693bc7f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/json_api_workspace_to_one_linkage.py +++ /dev/null @@ -1,132 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.json_api_workspace_linkage import JsonApiWorkspaceLinkage -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -JSONAPIWORKSPACETOONELINKAGE_ONE_OF_SCHEMAS = ["JsonApiWorkspaceLinkage"] - -class JsonApiWorkspaceToOneLinkage(BaseModel): - """ - References to other resource objects in a to-one (\\\"relationship\\\"). Relationships can be specified by including a member in a resource's links object. - """ - # data type: JsonApiWorkspaceLinkage - oneof_schema_1_validator: Optional[JsonApiWorkspaceLinkage] = None - actual_instance: Optional[Union[JsonApiWorkspaceLinkage]] = None - one_of_schemas: Set[str] = { "JsonApiWorkspaceLinkage" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - if v is None: - return v - - instance = JsonApiWorkspaceToOneLinkage.model_construct() - error_messages = [] - match = 0 - # validate data type: JsonApiWorkspaceLinkage - if not isinstance(v, JsonApiWorkspaceLinkage): - error_messages.append(f"Error! Input type `{type(v)}` is not `JsonApiWorkspaceLinkage`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in JsonApiWorkspaceToOneLinkage with oneOf schemas: JsonApiWorkspaceLinkage. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: Optional[str]) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - if json_str is None: - return instance - - error_messages = [] - match = 0 - - # deserialize data into JsonApiWorkspaceLinkage - try: - if match == 0: - instance.actual_instance = JsonApiWorkspaceLinkage.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into JsonApiWorkspaceToOneLinkage with oneOf schemas: JsonApiWorkspaceLinkage. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], JsonApiWorkspaceLinkage]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/key_drivers_dimension.py b/gooddata-api-client/gooddata_api_client/models/key_drivers_dimension.py deleted file mode 100644 index 35f2b33aa..000000000 --- a/gooddata-api-client/gooddata_api_client/models/key_drivers_dimension.py +++ /dev/null @@ -1,133 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.attribute_format import AttributeFormat -from gooddata_api_client.models.rest_api_identifier import RestApiIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class KeyDriversDimension(BaseModel): - """ - KeyDriversDimension - """ # noqa: E501 - attribute: RestApiIdentifier - attribute_name: StrictStr = Field(alias="attributeName") - format: Optional[AttributeFormat] = None - granularity: Optional[StrictStr] = None - label: RestApiIdentifier - label_name: StrictStr = Field(alias="labelName") - value_type: Optional[StrictStr] = Field(default=None, alias="valueType") - __properties: ClassVar[List[str]] = ["attribute", "attributeName", "format", "granularity", "label", "labelName", "valueType"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - @field_validator('value_type') - def value_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TEXT', 'HYPERLINK', 'GEO', 'GEO_LONGITUDE', 'GEO_LATITUDE', 'GEO_AREA', 'IMAGE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of KeyDriversDimension from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute - if self.attribute: - _dict['attribute'] = self.attribute.to_dict() - # override the default output from pydantic by calling `to_dict()` of format - if self.format: - _dict['format'] = self.format.to_dict() - # override the default output from pydantic by calling `to_dict()` of label - if self.label: - _dict['label'] = self.label.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of KeyDriversDimension from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": RestApiIdentifier.from_dict(obj["attribute"]) if obj.get("attribute") is not None else None, - "attributeName": obj.get("attributeName"), - "format": AttributeFormat.from_dict(obj["format"]) if obj.get("format") is not None else None, - "granularity": obj.get("granularity"), - "label": RestApiIdentifier.from_dict(obj["label"]) if obj.get("label") is not None else None, - "labelName": obj.get("labelName"), - "valueType": obj.get("valueType") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/key_drivers_request.py b/gooddata-api-client/gooddata_api_client/models/key_drivers_request.py deleted file mode 100644 index d6fc00ee5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/key_drivers_request.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.measure_item import MeasureItem -from typing import Optional, Set -from typing_extensions import Self - -class KeyDriversRequest(BaseModel): - """ - KeyDriversRequest - """ # noqa: E501 - aux_metrics: Optional[List[MeasureItem]] = Field(default=None, description="Additional metrics to be included in the computation, but excluded from the analysis.", alias="auxMetrics") - metric: MeasureItem - sort_direction: Optional[StrictStr] = Field(default='DESC', description="Sorting elements - ascending/descending order.", alias="sortDirection") - __properties: ClassVar[List[str]] = ["auxMetrics", "metric", "sortDirection"] - - @field_validator('sort_direction') - def sort_direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of KeyDriversRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in aux_metrics (list) - _items = [] - if self.aux_metrics: - for _item_aux_metrics in self.aux_metrics: - if _item_aux_metrics: - _items.append(_item_aux_metrics.to_dict()) - _dict['auxMetrics'] = _items - # override the default output from pydantic by calling `to_dict()` of metric - if self.metric: - _dict['metric'] = self.metric.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of KeyDriversRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "auxMetrics": [MeasureItem.from_dict(_item) for _item in obj["auxMetrics"]] if obj.get("auxMetrics") is not None else None, - "metric": MeasureItem.from_dict(obj["metric"]) if obj.get("metric") is not None else None, - "sortDirection": obj.get("sortDirection") if obj.get("sortDirection") is not None else 'DESC' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/key_drivers_response.py b/gooddata-api-client/gooddata_api_client/models/key_drivers_response.py deleted file mode 100644 index 5bcaff777..000000000 --- a/gooddata-api-client/gooddata_api_client/models/key_drivers_response.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_links import ExecutionLinks -from gooddata_api_client.models.key_drivers_dimension import KeyDriversDimension -from typing import Optional, Set -from typing_extensions import Self - -class KeyDriversResponse(BaseModel): - """ - KeyDriversResponse - """ # noqa: E501 - dimensions: List[KeyDriversDimension] - links: ExecutionLinks - __properties: ClassVar[List[str]] = ["dimensions", "links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of KeyDriversResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimensions (list) - _items = [] - if self.dimensions: - for _item_dimensions in self.dimensions: - if _item_dimensions: - _items.append(_item_dimensions.to_dict()) - _dict['dimensions'] = _items - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of KeyDriversResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dimensions": [KeyDriversDimension.from_dict(_item) for _item in obj["dimensions"]] if obj.get("dimensions") is not None else None, - "links": ExecutionLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/key_drivers_result.py b/gooddata-api-client/gooddata_api_client/models/key_drivers_result.py deleted file mode 100644 index 65acf820b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/key_drivers_result.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class KeyDriversResult(BaseModel): - """ - KeyDriversResult - """ # noqa: E501 - data: Dict[str, Any] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of KeyDriversResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of KeyDriversResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": obj.get("data") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/knowledge_document_metadata_dto.py b/gooddata-api-client/gooddata_api_client/models/knowledge_document_metadata_dto.py deleted file mode 100644 index a9e41bd6f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/knowledge_document_metadata_dto.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class KnowledgeDocumentMetadataDto(BaseModel): - """ - KnowledgeDocumentMetadataDto - """ # noqa: E501 - created_at: StrictStr = Field(alias="createdAt") - created_by: StrictStr = Field(alias="createdBy") - filename: StrictStr - is_disabled: Optional[StrictBool] = Field(default=None, alias="isDisabled") - num_chunks: StrictInt = Field(alias="numChunks") - scopes: List[StrictStr] - title: Optional[StrictStr] = None - updated_at: StrictStr = Field(alias="updatedAt") - updated_by: StrictStr = Field(alias="updatedBy") - workspace_id: Optional[StrictStr] = Field(default=None, alias="workspaceId") - __properties: ClassVar[List[str]] = ["createdAt", "createdBy", "filename", "isDisabled", "numChunks", "scopes", "title", "updatedAt", "updatedBy", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of KnowledgeDocumentMetadataDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of KnowledgeDocumentMetadataDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createdAt": obj.get("createdAt"), - "createdBy": obj.get("createdBy"), - "filename": obj.get("filename"), - "isDisabled": obj.get("isDisabled"), - "numChunks": obj.get("numChunks"), - "scopes": obj.get("scopes"), - "title": obj.get("title"), - "updatedAt": obj.get("updatedAt"), - "updatedBy": obj.get("updatedBy"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/knowledge_search_result_dto.py b/gooddata-api-client/gooddata_api_client/models/knowledge_search_result_dto.py deleted file mode 100644 index 333f027f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/knowledge_search_result_dto.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class KnowledgeSearchResultDto(BaseModel): - """ - KnowledgeSearchResultDto - """ # noqa: E501 - chunk_index: StrictInt = Field(alias="chunkIndex") - content: StrictStr - filename: StrictStr - page_numbers: List[StrictInt] = Field(alias="pageNumbers") - scopes: List[StrictStr] - score: Union[StrictFloat, StrictInt] - title: Optional[StrictStr] = None - total_chunks: StrictInt = Field(alias="totalChunks") - workspace_id: Optional[StrictStr] = Field(default=None, alias="workspaceId") - __properties: ClassVar[List[str]] = ["chunkIndex", "content", "filename", "pageNumbers", "scopes", "score", "title", "totalChunks", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of KnowledgeSearchResultDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of KnowledgeSearchResultDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "chunkIndex": obj.get("chunkIndex"), - "content": obj.get("content"), - "filename": obj.get("filename"), - "pageNumbers": obj.get("pageNumbers"), - "scopes": obj.get("scopes"), - "score": obj.get("score"), - "title": obj.get("title"), - "totalChunks": obj.get("totalChunks"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/label_identifier.py b/gooddata-api-client/gooddata_api_client/models/label_identifier.py deleted file mode 100644 index 7c6970c87..000000000 --- a/gooddata-api-client/gooddata_api_client/models/label_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class LabelIdentifier(BaseModel): - """ - A label identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Label ID.") - type: StrictStr = Field(description="A type of the label.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['label']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('label')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of LabelIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of LabelIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/list_database_instances_response.py b/gooddata-api-client/gooddata_api_client/models/list_database_instances_response.py deleted file mode 100644 index 90fa60ce1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/list_database_instances_response.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.database_instance import DatabaseInstance -from typing import Optional, Set -from typing_extensions import Self - -class ListDatabaseInstancesResponse(BaseModel): - """ - Paged response for listing AI Lake database instances - """ # noqa: E501 - databases: List[DatabaseInstance] = Field(description="List of database instances") - total_count: Optional[StrictInt] = Field(default=None, description="Total count of items (only set when metaInclude=page)", alias="totalCount") - __properties: ClassVar[List[str]] = ["databases", "totalCount"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ListDatabaseInstancesResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in databases (list) - _items = [] - if self.databases: - for _item_databases in self.databases: - if _item_databases: - _items.append(_item_databases.to_dict()) - _dict['databases'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ListDatabaseInstancesResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "databases": [DatabaseInstance.from_dict(_item) for _item in obj["databases"]] if obj.get("databases") is not None else None, - "totalCount": obj.get("totalCount") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/list_knowledge_documents_response_dto.py b/gooddata-api-client/gooddata_api_client/models/list_knowledge_documents_response_dto.py deleted file mode 100644 index 1bc868a4f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/list_knowledge_documents_response_dto.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.knowledge_document_metadata_dto import KnowledgeDocumentMetadataDto -from typing import Optional, Set -from typing_extensions import Self - -class ListKnowledgeDocumentsResponseDto(BaseModel): - """ - ListKnowledgeDocumentsResponseDto - """ # noqa: E501 - documents: List[KnowledgeDocumentMetadataDto] - next_page_token: Optional[StrictStr] = Field(default=None, alias="nextPageToken") - total_count: Optional[StrictInt] = Field(default=None, alias="totalCount") - __properties: ClassVar[List[str]] = ["documents", "nextPageToken", "totalCount"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ListKnowledgeDocumentsResponseDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in documents (list) - _items = [] - if self.documents: - for _item_documents in self.documents: - if _item_documents: - _items.append(_item_documents.to_dict()) - _dict['documents'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ListKnowledgeDocumentsResponseDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "documents": [KnowledgeDocumentMetadataDto.from_dict(_item) for _item in obj["documents"]] if obj.get("documents") is not None else None, - "nextPageToken": obj.get("nextPageToken"), - "totalCount": obj.get("totalCount") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/list_links.py b/gooddata-api-client/gooddata_api_client/models/list_links.py deleted file mode 100644 index 4b1d2f744..000000000 --- a/gooddata-api-client/gooddata_api_client/models/list_links.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ListLinks(BaseModel): - """ - ListLinks - """ # noqa: E501 - var_self: StrictStr = Field(description="A string containing the link's URL.", alias="self") - next: Optional[StrictStr] = Field(default=None, description="A string containing the link's URL for the next page of data.") - __properties: ClassVar[List[str]] = ["self", "next"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ListLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ListLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "self": obj.get("self"), - "next": obj.get("next") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/list_services_response.py b/gooddata-api-client/gooddata_api_client/models/list_services_response.py deleted file mode 100644 index eeabfa77f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/list_services_response.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.service_info import ServiceInfo -from typing import Optional, Set -from typing_extensions import Self - -class ListServicesResponse(BaseModel): - """ - Paged response for listing AI Lake services - """ # noqa: E501 - services: List[ServiceInfo] = Field(description="List of services") - total_count: Optional[StrictInt] = Field(default=None, description="Total count of items (only set when metaInclude=page)", alias="totalCount") - __properties: ClassVar[List[str]] = ["services", "totalCount"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ListServicesResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in services (list) - _items = [] - if self.services: - for _item_services in self.services: - if _item_services: - _items.append(_item_services.to_dict()) - _dict['services'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ListServicesResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "services": [ServiceInfo.from_dict(_item) for _item in obj["services"]] if obj.get("services") is not None else None, - "totalCount": obj.get("totalCount") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/llm_model.py b/gooddata-api-client/gooddata_api_client/models/llm_model.py deleted file mode 100644 index 3428ca091..000000000 --- a/gooddata-api-client/gooddata_api_client/models/llm_model.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class LlmModel(BaseModel): - """ - LLM Model configuration (id, family) within a provider. - """ # noqa: E501 - family: StrictStr = Field(description="Family of LLM models.") - id: Annotated[str, Field(strict=True, max_length=255)] = Field(description="Unique identifier of the model (e.g., gpt-5.3, claude-4.6).") - __properties: ClassVar[List[str]] = ["family", "id"] - - @field_validator('family') - def family_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['OPENAI', 'ANTHROPIC', 'META', 'MISTRAL', 'AMAZON', 'GOOGLE', 'COHERE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('OPENAI', 'ANTHROPIC', 'META', 'MISTRAL', 'AMAZON', 'GOOGLE', 'COHERE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of LlmModel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of LlmModel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "family": obj.get("family"), - "id": obj.get("id") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/llm_provider_auth.py b/gooddata-api-client/gooddata_api_client/models/llm_provider_auth.py deleted file mode 100644 index 893562e80..000000000 --- a/gooddata-api-client/gooddata_api_client/models/llm_provider_auth.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class LlmProviderAuth(BaseModel): - """ - LlmProviderAuth - """ # noqa: E501 - type: StrictStr - __properties: ClassVar[List[str]] = ["type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of LlmProviderAuth from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of LlmProviderAuth from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/llm_provider_config.py b/gooddata-api-client/gooddata_api_client/models/llm_provider_config.py deleted file mode 100644 index 1144d614e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/llm_provider_config.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.aws_bedrock_provider_config import AwsBedrockProviderConfig -from gooddata_api_client.models.azure_foundry_provider_config import AzureFoundryProviderConfig -from gooddata_api_client.models.open_ai_provider_config import OpenAIProviderConfig -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -LLMPROVIDERCONFIG_ONE_OF_SCHEMAS = ["AwsBedrockProviderConfig", "AzureFoundryProviderConfig", "OpenAIProviderConfig"] - -class LlmProviderConfig(BaseModel): - """ - Provider configuration to test. - """ - # data type: AwsBedrockProviderConfig - oneof_schema_1_validator: Optional[AwsBedrockProviderConfig] = None - # data type: AzureFoundryProviderConfig - oneof_schema_2_validator: Optional[AzureFoundryProviderConfig] = None - # data type: OpenAIProviderConfig - oneof_schema_3_validator: Optional[OpenAIProviderConfig] = None - actual_instance: Optional[Union[AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig]] = None - one_of_schemas: Set[str] = { "AwsBedrockProviderConfig", "AzureFoundryProviderConfig", "OpenAIProviderConfig" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = LlmProviderConfig.model_construct() - error_messages = [] - match = 0 - # validate data type: AwsBedrockProviderConfig - if not isinstance(v, AwsBedrockProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `AwsBedrockProviderConfig`") - else: - match += 1 - # validate data type: AzureFoundryProviderConfig - if not isinstance(v, AzureFoundryProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `AzureFoundryProviderConfig`") - else: - match += 1 - # validate data type: OpenAIProviderConfig - if not isinstance(v, OpenAIProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `OpenAIProviderConfig`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in LlmProviderConfig with oneOf schemas: AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AwsBedrockProviderConfig - try: - if match == 0: - instance.actual_instance = AwsBedrockProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AzureFoundryProviderConfig - try: - if match == 0: - instance.actual_instance = AzureFoundryProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into OpenAIProviderConfig - try: - if match == 0: - instance.actual_instance = OpenAIProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into LlmProviderConfig with oneOf schemas: AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/local_identifier.py b/gooddata-api-client/gooddata_api_client/models/local_identifier.py deleted file mode 100644 index e2e84ba06..000000000 --- a/gooddata-api-client/gooddata_api_client/models/local_identifier.py +++ /dev/null @@ -1,103 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class LocalIdentifier(BaseModel): - """ - LocalIdentifier - """ # noqa: E501 - format: Optional[Annotated[str, Field(strict=True, max_length=2048)]] = Field(default='#,##0.00', description="Metric format.") - local_identifier: StrictStr = Field(description="Local identifier of the metric to be compared.", alias="localIdentifier") - title: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Metric title.") - __properties: ClassVar[List[str]] = ["format", "localIdentifier", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of LocalIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if format (nullable) is None - # and model_fields_set contains the field - if self.format is None and "format" in self.model_fields_set: - _dict['format'] = None - - # set to None if title (nullable) is None - # and model_fields_set contains the field - if self.title is None and "title" in self.model_fields_set: - _dict['title'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of LocalIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "format": obj.get("format") if obj.get("format") is not None else '#,##0.00', - "localIdentifier": obj.get("localIdentifier"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/locale_request.py b/gooddata-api-client/gooddata_api_client/models/locale_request.py deleted file mode 100644 index 3b283d067..000000000 --- a/gooddata-api-client/gooddata_api_client/models/locale_request.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class LocaleRequest(BaseModel): - """ - LocaleRequest - """ # noqa: E501 - locale: StrictStr = Field(description="Requested locale in the form of language tag (see RFC 5646).") - __properties: ClassVar[List[str]] = ["locale"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of LocaleRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of LocaleRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "locale": obj.get("locale") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/manage_dashboard_permissions_request_inner.py b/gooddata-api-client/gooddata_api_client/models/manage_dashboard_permissions_request_inner.py deleted file mode 100644 index 733f3131c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/manage_dashboard_permissions_request_inner.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.permissions_for_assignee import PermissionsForAssignee -from gooddata_api_client.models.permissions_for_assignee_rule import PermissionsForAssigneeRule -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -MANAGEDASHBOARDPERMISSIONSREQUESTINNER_ONE_OF_SCHEMAS = ["PermissionsForAssignee", "PermissionsForAssigneeRule"] - -class ManageDashboardPermissionsRequestInner(BaseModel): - """ - ManageDashboardPermissionsRequestInner - """ - # data type: PermissionsForAssignee - oneof_schema_1_validator: Optional[PermissionsForAssignee] = None - # data type: PermissionsForAssigneeRule - oneof_schema_2_validator: Optional[PermissionsForAssigneeRule] = None - actual_instance: Optional[Union[PermissionsForAssignee, PermissionsForAssigneeRule]] = None - one_of_schemas: Set[str] = { "PermissionsForAssignee", "PermissionsForAssigneeRule" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ManageDashboardPermissionsRequestInner.model_construct() - error_messages = [] - match = 0 - # validate data type: PermissionsForAssignee - if not isinstance(v, PermissionsForAssignee): - error_messages.append(f"Error! Input type `{type(v)}` is not `PermissionsForAssignee`") - else: - match += 1 - # validate data type: PermissionsForAssigneeRule - if not isinstance(v, PermissionsForAssigneeRule): - error_messages.append(f"Error! Input type `{type(v)}` is not `PermissionsForAssigneeRule`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ManageDashboardPermissionsRequestInner with oneOf schemas: PermissionsForAssignee, PermissionsForAssigneeRule. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into PermissionsForAssignee - try: - if match == 0: - instance.actual_instance = PermissionsForAssignee.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PermissionsForAssigneeRule - try: - if match == 0: - instance.actual_instance = PermissionsForAssigneeRule.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ManageDashboardPermissionsRequestInner with oneOf schemas: PermissionsForAssignee, PermissionsForAssigneeRule. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], PermissionsForAssignee, PermissionsForAssigneeRule]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/match_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/match_attribute_filter.py deleted file mode 100644 index 7b232699b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/match_attribute_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.match_attribute_filter_match_attribute_filter import MatchAttributeFilterMatchAttributeFilter -from typing import Optional, Set -from typing_extensions import Self - -class MatchAttributeFilter(BaseModel): - """ - Filter via label with given match type and literal value. - """ # noqa: E501 - match_attribute_filter: MatchAttributeFilterMatchAttributeFilter = Field(alias="matchAttributeFilter") - __properties: ClassVar[List[str]] = ["matchAttributeFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MatchAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of match_attribute_filter - if self.match_attribute_filter: - _dict['matchAttributeFilter'] = self.match_attribute_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MatchAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "matchAttributeFilter": MatchAttributeFilterMatchAttributeFilter.from_dict(obj["matchAttributeFilter"]) if obj.get("matchAttributeFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/match_attribute_filter_match_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/match_attribute_filter_match_attribute_filter.py deleted file mode 100644 index 3e785a1d2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/match_attribute_filter_match_attribute_filter.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class MatchAttributeFilterMatchAttributeFilter(BaseModel): - """ - MatchAttributeFilterMatchAttributeFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - case_sensitive: Optional[StrictBool] = Field(default=False, description="Indicates whether the filter match is evaluated in case-sensitive mode or not.", alias="caseSensitive") - label: AfmIdentifier - literal: StrictStr = Field(description="Literal used to limit label values.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - match_type: StrictStr = Field(description="Requested match type.", alias="matchType") - negate: Optional[StrictBool] = Field(default=False, description="Indicates whether the filter should negate the match.") - __properties: ClassVar[List[str]] = ["applyOnResult", "caseSensitive", "label", "literal", "localIdentifier", "matchType", "negate"] - - @field_validator('match_type') - def match_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['STARTS_WITH', 'ENDS_WITH', 'CONTAINS']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('STARTS_WITH', 'ENDS_WITH', 'CONTAINS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MatchAttributeFilterMatchAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of label - if self.label: - _dict['label'] = self.label.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MatchAttributeFilterMatchAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "caseSensitive": obj.get("caseSensitive") if obj.get("caseSensitive") is not None else False, - "label": AfmIdentifier.from_dict(obj["label"]) if obj.get("label") is not None else None, - "literal": obj.get("literal"), - "localIdentifier": obj.get("localIdentifier"), - "matchType": obj.get("matchType"), - "negate": obj.get("negate") if obj.get("negate") is not None else False - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_definition.py b/gooddata-api-client/gooddata_api_client/models/measure_definition.py deleted file mode 100644 index 6515ac82c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_definition.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.arithmetic_measure_definition import ArithmeticMeasureDefinition -from gooddata_api_client.models.inline_measure_definition import InlineMeasureDefinition -from gooddata_api_client.models.pop_measure_definition import PopMeasureDefinition -from gooddata_api_client.models.simple_measure_definition import SimpleMeasureDefinition -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -MEASUREDEFINITION_ONE_OF_SCHEMAS = ["ArithmeticMeasureDefinition", "InlineMeasureDefinition", "PopMeasureDefinition", "SimpleMeasureDefinition"] - -class MeasureDefinition(BaseModel): - """ - Abstract metric definition type - """ - # data type: InlineMeasureDefinition - oneof_schema_1_validator: Optional[InlineMeasureDefinition] = None - # data type: ArithmeticMeasureDefinition - oneof_schema_2_validator: Optional[ArithmeticMeasureDefinition] = None - # data type: SimpleMeasureDefinition - oneof_schema_3_validator: Optional[SimpleMeasureDefinition] = None - # data type: PopMeasureDefinition - oneof_schema_4_validator: Optional[PopMeasureDefinition] = None - actual_instance: Optional[Union[ArithmeticMeasureDefinition, InlineMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition]] = None - one_of_schemas: Set[str] = { "ArithmeticMeasureDefinition", "InlineMeasureDefinition", "PopMeasureDefinition", "SimpleMeasureDefinition" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = MeasureDefinition.model_construct() - error_messages = [] - match = 0 - # validate data type: InlineMeasureDefinition - if not isinstance(v, InlineMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `InlineMeasureDefinition`") - else: - match += 1 - # validate data type: ArithmeticMeasureDefinition - if not isinstance(v, ArithmeticMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `ArithmeticMeasureDefinition`") - else: - match += 1 - # validate data type: SimpleMeasureDefinition - if not isinstance(v, SimpleMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `SimpleMeasureDefinition`") - else: - match += 1 - # validate data type: PopMeasureDefinition - if not isinstance(v, PopMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `PopMeasureDefinition`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in MeasureDefinition with oneOf schemas: ArithmeticMeasureDefinition, InlineMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into InlineMeasureDefinition - try: - if match == 0: - instance.actual_instance = InlineMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into ArithmeticMeasureDefinition - try: - if match == 0: - instance.actual_instance = ArithmeticMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into SimpleMeasureDefinition - try: - if match == 0: - instance.actual_instance = SimpleMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PopMeasureDefinition - try: - if match == 0: - instance.actual_instance = PopMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into MeasureDefinition with oneOf schemas: ArithmeticMeasureDefinition, InlineMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], ArithmeticMeasureDefinition, InlineMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_execution_result_header.py b/gooddata-api-client/gooddata_api_client/models/measure_execution_result_header.py deleted file mode 100644 index 906772553..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_execution_result_header.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.measure_result_header import MeasureResultHeader -from typing import Optional, Set -from typing_extensions import Self - -class MeasureExecutionResultHeader(BaseModel): - """ - MeasureExecutionResultHeader - """ # noqa: E501 - measure_header: MeasureResultHeader = Field(alias="measureHeader") - __properties: ClassVar[List[str]] = ["measureHeader"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MeasureExecutionResultHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of measure_header - if self.measure_header: - _dict['measureHeader'] = self.measure_header.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MeasureExecutionResultHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "measureHeader": MeasureResultHeader.from_dict(obj["measureHeader"]) if obj.get("measureHeader") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_group_headers.py b/gooddata-api-client/gooddata_api_client/models/measure_group_headers.py deleted file mode 100644 index eb93592ed..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_group_headers.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.measure_header import MeasureHeader -from typing import Optional, Set -from typing_extensions import Self - -class MeasureGroupHeaders(BaseModel): - """ - Measure group headers - """ # noqa: E501 - measure_group_headers: Optional[List[MeasureHeader]] = Field(default=None, alias="measureGroupHeaders") - __properties: ClassVar[List[str]] = ["measureGroupHeaders"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MeasureGroupHeaders from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in measure_group_headers (list) - _items = [] - if self.measure_group_headers: - for _item_measure_group_headers in self.measure_group_headers: - if _item_measure_group_headers: - _items.append(_item_measure_group_headers.to_dict()) - _dict['measureGroupHeaders'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MeasureGroupHeaders from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "measureGroupHeaders": [MeasureHeader.from_dict(_item) for _item in obj["measureGroupHeaders"]] if obj.get("measureGroupHeaders") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_header.py b/gooddata-api-client/gooddata_api_client/models/measure_header.py deleted file mode 100644 index 9887e5b57..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_header.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class MeasureHeader(BaseModel): - """ - MeasureHeader - """ # noqa: E501 - format: Optional[StrictStr] = Field(default=None, description="Format to be used to format the measure data.") - local_identifier: StrictStr = Field(description="Local identifier of the measure this header relates to.", alias="localIdentifier") - name: Optional[StrictStr] = Field(default=None, description="Name of the measure.") - __properties: ClassVar[List[str]] = ["format", "localIdentifier", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MeasureHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MeasureHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "format": obj.get("format"), - "localIdentifier": obj.get("localIdentifier"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_item.py b/gooddata-api-client/gooddata_api_client/models/measure_item.py deleted file mode 100644 index 35983fbc7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_item.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from gooddata_api_client.models.measure_item_definition import MeasureItemDefinition -from typing import Optional, Set -from typing_extensions import Self - -class MeasureItem(BaseModel): - """ - Metric is a quantity that is calculated from the data. - """ # noqa: E501 - definition: MeasureItemDefinition - local_identifier: Annotated[str, Field(strict=True)] = Field(description="Local identifier of the metric. This can be used to reference the metric in other parts of the execution definition.", alias="localIdentifier") - __properties: ClassVar[List[str]] = ["definition", "localIdentifier"] - - @field_validator('local_identifier') - def local_identifier_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[.a-zA-Z0-9_-]+$", value): - raise ValueError(r"must validate the regular expression /^[.a-zA-Z0-9_-]+$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MeasureItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of definition - if self.definition: - _dict['definition'] = self.definition.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MeasureItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "definition": MeasureItemDefinition.from_dict(obj["definition"]) if obj.get("definition") is not None else None, - "localIdentifier": obj.get("localIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_item_definition.py b/gooddata-api-client/gooddata_api_client/models/measure_item_definition.py deleted file mode 100644 index 4a3e4fab3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_item_definition.py +++ /dev/null @@ -1,201 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.arithmetic_measure_definition import ArithmeticMeasureDefinition -from gooddata_api_client.models.inline_measure_definition import InlineMeasureDefinition -from gooddata_api_client.models.pop_dataset_measure_definition import PopDatasetMeasureDefinition -from gooddata_api_client.models.pop_date_measure_definition import PopDateMeasureDefinition -from gooddata_api_client.models.pop_measure_definition import PopMeasureDefinition -from gooddata_api_client.models.simple_measure_definition import SimpleMeasureDefinition -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -MEASUREITEMDEFINITION_ONE_OF_SCHEMAS = ["ArithmeticMeasureDefinition", "InlineMeasureDefinition", "PopDatasetMeasureDefinition", "PopDateMeasureDefinition", "PopMeasureDefinition", "SimpleMeasureDefinition"] - -class MeasureItemDefinition(BaseModel): - """ - MeasureItemDefinition - """ - # data type: ArithmeticMeasureDefinition - oneof_schema_1_validator: Optional[ArithmeticMeasureDefinition] = None - # data type: InlineMeasureDefinition - oneof_schema_2_validator: Optional[InlineMeasureDefinition] = None - # data type: PopDatasetMeasureDefinition - oneof_schema_3_validator: Optional[PopDatasetMeasureDefinition] = None - # data type: PopDateMeasureDefinition - oneof_schema_4_validator: Optional[PopDateMeasureDefinition] = None - # data type: PopMeasureDefinition - oneof_schema_5_validator: Optional[PopMeasureDefinition] = None - # data type: SimpleMeasureDefinition - oneof_schema_6_validator: Optional[SimpleMeasureDefinition] = None - actual_instance: Optional[Union[ArithmeticMeasureDefinition, InlineMeasureDefinition, PopDatasetMeasureDefinition, PopDateMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition]] = None - one_of_schemas: Set[str] = { "ArithmeticMeasureDefinition", "InlineMeasureDefinition", "PopDatasetMeasureDefinition", "PopDateMeasureDefinition", "PopMeasureDefinition", "SimpleMeasureDefinition" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = MeasureItemDefinition.model_construct() - error_messages = [] - match = 0 - # validate data type: ArithmeticMeasureDefinition - if not isinstance(v, ArithmeticMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `ArithmeticMeasureDefinition`") - else: - match += 1 - # validate data type: InlineMeasureDefinition - if not isinstance(v, InlineMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `InlineMeasureDefinition`") - else: - match += 1 - # validate data type: PopDatasetMeasureDefinition - if not isinstance(v, PopDatasetMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `PopDatasetMeasureDefinition`") - else: - match += 1 - # validate data type: PopDateMeasureDefinition - if not isinstance(v, PopDateMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `PopDateMeasureDefinition`") - else: - match += 1 - # validate data type: PopMeasureDefinition - if not isinstance(v, PopMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `PopMeasureDefinition`") - else: - match += 1 - # validate data type: SimpleMeasureDefinition - if not isinstance(v, SimpleMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `SimpleMeasureDefinition`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in MeasureItemDefinition with oneOf schemas: ArithmeticMeasureDefinition, InlineMeasureDefinition, PopDatasetMeasureDefinition, PopDateMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into ArithmeticMeasureDefinition - try: - if match == 0: - instance.actual_instance = ArithmeticMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into InlineMeasureDefinition - try: - if match == 0: - instance.actual_instance = InlineMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PopDatasetMeasureDefinition - try: - if match == 0: - instance.actual_instance = PopDatasetMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PopDateMeasureDefinition - try: - if match == 0: - instance.actual_instance = PopDateMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PopMeasureDefinition - try: - if match == 0: - instance.actual_instance = PopMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into SimpleMeasureDefinition - try: - if match == 0: - instance.actual_instance = SimpleMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into MeasureItemDefinition with oneOf schemas: ArithmeticMeasureDefinition, InlineMeasureDefinition, PopDatasetMeasureDefinition, PopDateMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], ArithmeticMeasureDefinition, InlineMeasureDefinition, PopDatasetMeasureDefinition, PopDateMeasureDefinition, PopMeasureDefinition, SimpleMeasureDefinition]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_result_header.py b/gooddata-api-client/gooddata_api_client/models/measure_result_header.py deleted file mode 100644 index c9df3cb1b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_result_header.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class MeasureResultHeader(BaseModel): - """ - Header containing the information related to metrics. - """ # noqa: E501 - measure_index: StrictInt = Field(description="Metric index. Starts at 0.", alias="measureIndex") - __properties: ClassVar[List[str]] = ["measureIndex"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MeasureResultHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MeasureResultHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "measureIndex": obj.get("measureIndex") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_value_condition.py b/gooddata-api-client/gooddata_api_client/models/measure_value_condition.py deleted file mode 100644 index 8e80f2f7a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_value_condition.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.comparison_condition import ComparisonCondition -from gooddata_api_client.models.range_condition import RangeCondition -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -MEASUREVALUECONDITION_ONE_OF_SCHEMAS = ["ComparisonCondition", "RangeCondition"] - -class MeasureValueCondition(BaseModel): - """ - A condition for filtering by measure value. Can be either a comparison or a range condition. - """ - # data type: ComparisonCondition - oneof_schema_1_validator: Optional[ComparisonCondition] = None - # data type: RangeCondition - oneof_schema_2_validator: Optional[RangeCondition] = None - actual_instance: Optional[Union[ComparisonCondition, RangeCondition]] = None - one_of_schemas: Set[str] = { "ComparisonCondition", "RangeCondition" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = MeasureValueCondition.model_construct() - error_messages = [] - match = 0 - # validate data type: ComparisonCondition - if not isinstance(v, ComparisonCondition): - error_messages.append(f"Error! Input type `{type(v)}` is not `ComparisonCondition`") - else: - match += 1 - # validate data type: RangeCondition - if not isinstance(v, RangeCondition): - error_messages.append(f"Error! Input type `{type(v)}` is not `RangeCondition`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in MeasureValueCondition with oneOf schemas: ComparisonCondition, RangeCondition. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into ComparisonCondition - try: - if match == 0: - instance.actual_instance = ComparisonCondition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RangeCondition - try: - if match == 0: - instance.actual_instance = RangeCondition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into MeasureValueCondition with oneOf schemas: ComparisonCondition, RangeCondition. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], ComparisonCondition, RangeCondition]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/measure_value_filter.py deleted file mode 100644 index a35a2a304..000000000 --- a/gooddata-api-client/gooddata_api_client/models/measure_value_filter.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.comparison_measure_value_filter import ComparisonMeasureValueFilter -from gooddata_api_client.models.compound_measure_value_filter import CompoundMeasureValueFilter -from gooddata_api_client.models.range_measure_value_filter import RangeMeasureValueFilter -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -MEASUREVALUEFILTER_ONE_OF_SCHEMAS = ["ComparisonMeasureValueFilter", "CompoundMeasureValueFilter", "RangeMeasureValueFilter"] - -class MeasureValueFilter(BaseModel): - """ - Abstract filter definition type filtering by the value of the metric. - """ - # data type: ComparisonMeasureValueFilter - oneof_schema_1_validator: Optional[ComparisonMeasureValueFilter] = None - # data type: RangeMeasureValueFilter - oneof_schema_2_validator: Optional[RangeMeasureValueFilter] = None - # data type: CompoundMeasureValueFilter - oneof_schema_3_validator: Optional[CompoundMeasureValueFilter] = None - actual_instance: Optional[Union[ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter]] = None - one_of_schemas: Set[str] = { "ComparisonMeasureValueFilter", "CompoundMeasureValueFilter", "RangeMeasureValueFilter" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = MeasureValueFilter.model_construct() - error_messages = [] - match = 0 - # validate data type: ComparisonMeasureValueFilter - if not isinstance(v, ComparisonMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `ComparisonMeasureValueFilter`") - else: - match += 1 - # validate data type: RangeMeasureValueFilter - if not isinstance(v, RangeMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `RangeMeasureValueFilter`") - else: - match += 1 - # validate data type: CompoundMeasureValueFilter - if not isinstance(v, CompoundMeasureValueFilter): - error_messages.append(f"Error! Input type `{type(v)}` is not `CompoundMeasureValueFilter`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in MeasureValueFilter with oneOf schemas: ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into ComparisonMeasureValueFilter - try: - if match == 0: - instance.actual_instance = ComparisonMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into RangeMeasureValueFilter - try: - if match == 0: - instance.actual_instance = RangeMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into CompoundMeasureValueFilter - try: - if match == 0: - instance.actual_instance = CompoundMeasureValueFilter.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into MeasureValueFilter with oneOf schemas: ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], ComparisonMeasureValueFilter, CompoundMeasureValueFilter, RangeMeasureValueFilter]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/memory_item_created_by_users.py b/gooddata-api-client/gooddata_api_client/models/memory_item_created_by_users.py deleted file mode 100644 index 80439931b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/memory_item_created_by_users.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.memory_item_user import MemoryItemUser -from typing import Optional, Set -from typing_extensions import Self - -class MemoryItemCreatedByUsers(BaseModel): - """ - MemoryItemCreatedByUsers - """ # noqa: E501 - reasoning: StrictStr = Field(description="Reasoning for error states") - users: List[MemoryItemUser] = Field(description="Users who created memory item") - __properties: ClassVar[List[str]] = ["reasoning", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MemoryItemCreatedByUsers from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MemoryItemCreatedByUsers from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "reasoning": obj.get("reasoning"), - "users": [MemoryItemUser.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/memory_item_user.py b/gooddata-api-client/gooddata_api_client/models/memory_item_user.py deleted file mode 100644 index 3bd6f8b8c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/memory_item_user.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class MemoryItemUser(BaseModel): - """ - Users who created memory item - """ # noqa: E501 - firstname: StrictStr = Field(description="First name of the user who created memory item") - lastname: StrictStr = Field(description="Last name of the user who created memory item") - user_id: StrictStr = Field(description="User ID of the user who created memory item", alias="userId") - __properties: ClassVar[List[str]] = ["firstname", "lastname", "userId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MemoryItemUser from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MemoryItemUser from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "firstname": obj.get("firstname"), - "lastname": obj.get("lastname"), - "userId": obj.get("userId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/metric.py b/gooddata-api-client/gooddata_api_client/models/metric.py deleted file mode 100644 index e959d73ce..000000000 --- a/gooddata-api-client/gooddata_api_client/models/metric.py +++ /dev/null @@ -1,113 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class Metric(BaseModel): - """ - List of metrics to be used in the new visualization - """ # noqa: E501 - agg_function: Optional[StrictStr] = Field(default=None, description="Agg function. Empty if a stored metric is used.", alias="aggFunction") - id: StrictStr = Field(description="ID of the object") - title: StrictStr = Field(description="Title of metric.") - type: StrictStr = Field(description="Object type") - __properties: ClassVar[List[str]] = ["aggFunction", "id", "title", "type"] - - @field_validator('agg_function') - def agg_function_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['COUNT', 'SUM', 'MIN', 'MAX', 'AVG', 'MEDIAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('COUNT', 'SUM', 'MIN', 'MAX', 'AVG', 'MEDIAN')") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric', 'fact', 'attribute']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric', 'fact', 'attribute')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Metric from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Metric from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "aggFunction": obj.get("aggFunction"), - "id": obj.get("id"), - "title": obj.get("title"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/metric_definition_override.py b/gooddata-api-client/gooddata_api_client/models/metric_definition_override.py deleted file mode 100644 index 442e1a3e0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/metric_definition_override.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_core import AfmObjectIdentifierCore -from gooddata_api_client.models.inline_measure_definition import InlineMeasureDefinition -from typing import Optional, Set -from typing_extensions import Self - -class MetricDefinitionOverride(BaseModel): - """ - (EXPERIMENTAL) Override for a catalog metric definition. - """ # noqa: E501 - definition: InlineMeasureDefinition - item: AfmObjectIdentifierCore - __properties: ClassVar[List[str]] = ["definition", "item"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MetricDefinitionOverride from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of definition - if self.definition: - _dict['definition'] = self.definition.to_dict() - # override the default output from pydantic by calling `to_dict()` of item - if self.item: - _dict['item'] = self.item.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MetricDefinitionOverride from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "definition": InlineMeasureDefinition.from_dict(obj["definition"]) if obj.get("definition") is not None else None, - "item": AfmObjectIdentifierCore.from_dict(obj["item"]) if obj.get("item") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/metric_record.py b/gooddata-api-client/gooddata_api_client/models/metric_record.py deleted file mode 100644 index 79dad87e8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/metric_record.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class MetricRecord(BaseModel): - """ - MetricRecord - """ # noqa: E501 - formatted_value: Optional[StrictStr] = Field(default=None, alias="formattedValue") - value: Union[StrictFloat, StrictInt] - __properties: ClassVar[List[str]] = ["formattedValue", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MetricRecord from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MetricRecord from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "formattedValue": obj.get("formattedValue"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/metric_value_change.py b/gooddata-api-client/gooddata_api_client/models/metric_value_change.py deleted file mode 100644 index af30dda9f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/metric_value_change.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class MetricValueChange(BaseModel): - """ - Individual change analysis data item - """ # noqa: E501 - attribute_name: StrictStr = Field(description="The name of the attribute being analyzed", alias="attributeName") - attribute_value: StrictStr = Field(description="The value of the attribute being analyzed", alias="attributeValue") - attribute_values_change_mean: Union[StrictFloat, StrictInt] = Field(description="The mean of attribute value changes for the attribute being analyzed", alias="attributeValuesChangeMean") - attribute_values_change_std: Union[StrictFloat, StrictInt] = Field(description="The standard deviation of attribute value changes for the attribute being analyzed", alias="attributeValuesChangeStd") - is_significant_change: StrictBool = Field(description="Whether the change is statistically significant", alias="isSignificantChange") - metric_value_delta: Union[StrictFloat, StrictInt] = Field(description="The delta between analyzed and reference periods", alias="metricValueDelta") - metric_value_delta_abs: Union[StrictFloat, StrictInt] = Field(description="The absolute delta between analyzed and reference periods", alias="metricValueDeltaAbs") - metric_value_in_analyzed_period: Union[StrictFloat, StrictInt] = Field(description="The metric value in the analyzed period", alias="metricValueInAnalyzedPeriod") - metric_value_in_reference_period: Union[StrictFloat, StrictInt] = Field(description="The metric value in the reference period", alias="metricValueInReferencePeriod") - overall_metric_value_in_analyzed_period: Union[StrictFloat, StrictInt] = Field(description="The overall metric value in the analyzed period", alias="overallMetricValueInAnalyzedPeriod") - overall_metric_value_in_reference_period: Union[StrictFloat, StrictInt] = Field(description="The overall metric value in the reference period", alias="overallMetricValueInReferencePeriod") - __properties: ClassVar[List[str]] = ["attributeName", "attributeValue", "attributeValuesChangeMean", "attributeValuesChangeStd", "isSignificantChange", "metricValueDelta", "metricValueDeltaAbs", "metricValueInAnalyzedPeriod", "metricValueInReferencePeriod", "overallMetricValueInAnalyzedPeriod", "overallMetricValueInReferencePeriod"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of MetricValueChange from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of MetricValueChange from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeName": obj.get("attributeName"), - "attributeValue": obj.get("attributeValue"), - "attributeValuesChangeMean": obj.get("attributeValuesChangeMean"), - "attributeValuesChangeStd": obj.get("attributeValuesChangeStd"), - "isSignificantChange": obj.get("isSignificantChange"), - "metricValueDelta": obj.get("metricValueDelta"), - "metricValueDeltaAbs": obj.get("metricValueDeltaAbs"), - "metricValueInAnalyzedPeriod": obj.get("metricValueInAnalyzedPeriod"), - "metricValueInReferencePeriod": obj.get("metricValueInReferencePeriod"), - "overallMetricValueInAnalyzedPeriod": obj.get("overallMetricValueInAnalyzedPeriod"), - "overallMetricValueInReferencePeriod": obj.get("overallMetricValueInReferencePeriod") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/model_test_result.py b/gooddata-api-client/gooddata_api_client/models/model_test_result.py deleted file mode 100644 index ced009ee5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/model_test_result.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ModelTestResult(BaseModel): - """ - Per-model test results. - """ # noqa: E501 - message: StrictStr = Field(description="Message about the model test result.") - model_id: StrictStr = Field(description="The model ID that was tested.", alias="modelId") - successful: StrictBool = Field(description="Whether the model test was successful.") - __properties: ClassVar[List[str]] = ["message", "modelId", "successful"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ModelTestResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ModelTestResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "message": obj.get("message"), - "modelId": obj.get("modelId"), - "successful": obj.get("successful") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/negative_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/negative_attribute_filter.py deleted file mode 100644 index 66da3c6c9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/negative_attribute_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.negative_attribute_filter_negative_attribute_filter import NegativeAttributeFilterNegativeAttributeFilter -from typing import Optional, Set -from typing_extensions import Self - -class NegativeAttributeFilter(BaseModel): - """ - Filter able to limit element values by label and related selected negated elements. - """ # noqa: E501 - negative_attribute_filter: NegativeAttributeFilterNegativeAttributeFilter = Field(alias="negativeAttributeFilter") - __properties: ClassVar[List[str]] = ["negativeAttributeFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of NegativeAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of negative_attribute_filter - if self.negative_attribute_filter: - _dict['negativeAttributeFilter'] = self.negative_attribute_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of NegativeAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "negativeAttributeFilter": NegativeAttributeFilterNegativeAttributeFilter.from_dict(obj["negativeAttributeFilter"]) if obj.get("negativeAttributeFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/negative_attribute_filter_negative_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/negative_attribute_filter_negative_attribute_filter.py deleted file mode 100644 index 9a985bb0c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/negative_attribute_filter_negative_attribute_filter.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from gooddata_api_client.models.attribute_filter_elements import AttributeFilterElements -from typing import Optional, Set -from typing_extensions import Self - -class NegativeAttributeFilterNegativeAttributeFilter(BaseModel): - """ - NegativeAttributeFilterNegativeAttributeFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - label: AfmIdentifier - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - not_in: AttributeFilterElements = Field(alias="notIn") - __properties: ClassVar[List[str]] = ["applyOnResult", "label", "localIdentifier", "notIn"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of NegativeAttributeFilterNegativeAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of label - if self.label: - _dict['label'] = self.label.to_dict() - # override the default output from pydantic by calling `to_dict()` of not_in - if self.not_in: - _dict['notIn'] = self.not_in.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of NegativeAttributeFilterNegativeAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "label": AfmIdentifier.from_dict(obj["label"]) if obj.get("label") is not None else None, - "localIdentifier": obj.get("localIdentifier"), - "notIn": AttributeFilterElements.from_dict(obj["notIn"]) if obj.get("notIn") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/note.py b/gooddata-api-client/gooddata_api_client/models/note.py deleted file mode 100644 index 7266eda77..000000000 --- a/gooddata-api-client/gooddata_api_client/models/note.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class Note(BaseModel): - """ - Note - """ # noqa: E501 - applies_to: Optional[StrictStr] = Field(default=None, alias="appliesTo") - category: Optional[StrictStr] = None - content: Optional[StrictStr] = None - id: Optional[StrictStr] = None - other_attributes: Optional[Dict[str, StrictStr]] = Field(default=None, alias="otherAttributes") - priority: Optional[StrictInt] = None - __properties: ClassVar[List[str]] = ["appliesTo", "category", "content", "id", "otherAttributes", "priority"] - - @field_validator('applies_to') - def applies_to_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SOURCE', 'TARGET']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SOURCE', 'TARGET')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Note from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Note from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "appliesTo": obj.get("appliesTo"), - "category": obj.get("category"), - "content": obj.get("content"), - "id": obj.get("id"), - "otherAttributes": obj.get("otherAttributes"), - "priority": obj.get("priority") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/notes.py b/gooddata-api-client/gooddata_api_client/models/notes.py deleted file mode 100644 index d23204c6f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notes.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.note import Note -from typing import Optional, Set -from typing_extensions import Self - -class Notes(BaseModel): - """ - Notes - """ # noqa: E501 - note: Optional[List[Note]] = None - __properties: ClassVar[List[str]] = ["note"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Notes from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in note (list) - _items = [] - if self.note: - for _item_note in self.note: - if _item_note: - _items.append(_item_note.to_dict()) - _dict['note'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Notes from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "note": [Note.from_dict(_item) for _item in obj["note"]] if obj.get("note") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/notification.py b/gooddata-api-client/gooddata_api_client/models/notification.py deleted file mode 100644 index 2ee0cd95c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notification.py +++ /dev/null @@ -1,103 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.notification_data import NotificationData -from typing import Optional, Set -from typing_extensions import Self - -class Notification(BaseModel): - """ - Notification - """ # noqa: E501 - automation_id: Optional[StrictStr] = Field(default=None, alias="automationId") - created_at: datetime = Field(alias="createdAt") - data: NotificationData - id: StrictStr - is_read: StrictBool = Field(alias="isRead") - workspace_id: Optional[StrictStr] = Field(default=None, alias="workspaceId") - __properties: ClassVar[List[str]] = ["automationId", "createdAt", "data", "id", "isRead", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Notification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Notification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "automationId": obj.get("automationId"), - "createdAt": obj.get("createdAt"), - "data": NotificationData.from_dict(obj["data"]) if obj.get("data") is not None else None, - "id": obj.get("id"), - "isRead": obj.get("isRead"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/notification_channel_destination.py b/gooddata-api-client/gooddata_api_client/models/notification_channel_destination.py deleted file mode 100644 index 9d230a0df..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notification_channel_destination.py +++ /dev/null @@ -1,171 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.default_smtp import DefaultSmtp -from gooddata_api_client.models.in_platform import InPlatform -from gooddata_api_client.models.smtp import Smtp -from gooddata_api_client.models.webhook import Webhook -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -NOTIFICATIONCHANNELDESTINATION_ONE_OF_SCHEMAS = ["DefaultSmtp", "InPlatform", "Smtp", "Webhook"] - -class NotificationChannelDestination(BaseModel): - """ - NotificationChannelDestination - """ - # data type: Webhook - oneof_schema_1_validator: Optional[Webhook] = None - # data type: Smtp - oneof_schema_2_validator: Optional[Smtp] = None - # data type: DefaultSmtp - oneof_schema_3_validator: Optional[DefaultSmtp] = None - # data type: InPlatform - oneof_schema_4_validator: Optional[InPlatform] = None - actual_instance: Optional[Union[DefaultSmtp, InPlatform, Smtp, Webhook]] = None - one_of_schemas: Set[str] = { "DefaultSmtp", "InPlatform", "Smtp", "Webhook" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = NotificationChannelDestination.model_construct() - error_messages = [] - match = 0 - # validate data type: Webhook - if not isinstance(v, Webhook): - error_messages.append(f"Error! Input type `{type(v)}` is not `Webhook`") - else: - match += 1 - # validate data type: Smtp - if not isinstance(v, Smtp): - error_messages.append(f"Error! Input type `{type(v)}` is not `Smtp`") - else: - match += 1 - # validate data type: DefaultSmtp - if not isinstance(v, DefaultSmtp): - error_messages.append(f"Error! Input type `{type(v)}` is not `DefaultSmtp`") - else: - match += 1 - # validate data type: InPlatform - if not isinstance(v, InPlatform): - error_messages.append(f"Error! Input type `{type(v)}` is not `InPlatform`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in NotificationChannelDestination with oneOf schemas: DefaultSmtp, InPlatform, Smtp, Webhook. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into Webhook - try: - if match == 0: - instance.actual_instance = Webhook.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into Smtp - try: - if match == 0: - instance.actual_instance = Smtp.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into DefaultSmtp - try: - if match == 0: - instance.actual_instance = DefaultSmtp.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into InPlatform - try: - if match == 0: - instance.actual_instance = InPlatform.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into NotificationChannelDestination with oneOf schemas: DefaultSmtp, InPlatform, Smtp, Webhook. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], DefaultSmtp, InPlatform, Smtp, Webhook]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/notification_content.py b/gooddata-api-client/gooddata_api_client/models/notification_content.py deleted file mode 100644 index bbdccea11..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notification_content.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from importlib import import_module -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from gooddata_api_client.models.automation_notification import AutomationNotification - from gooddata_api_client.models.test_notification import TestNotification - -class NotificationContent(BaseModel): - """ - NotificationContent - """ # noqa: E501 - type: StrictStr - __properties: ClassVar[List[str]] = ["type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - # JSON field name that stores the object type - __discriminator_property_name: ClassVar[str] = 'type' - - # discriminator mappings - __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'AUTOMATION': 'AutomationNotification','TEST': 'TestNotification' - } - - @classmethod - def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: - """Returns the discriminator value (object type) of the data""" - discriminator_value = obj[cls.__discriminator_property_name] - if discriminator_value: - return cls.__discriminator_value_class_map.get(discriminator_value) - else: - return None - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Union[AutomationNotification, TestNotification]]: - """Create an instance of NotificationContent from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[AutomationNotification, TestNotification]]: - """Create an instance of NotificationContent from a dict""" - # look up the object type based on discriminator mapping - object_type = cls.get_discriminator_value(obj) - if object_type == 'AutomationNotification': - return import_module("gooddata_api_client.models.automation_notification").AutomationNotification.from_dict(obj) - if object_type == 'TestNotification': - return import_module("gooddata_api_client.models.test_notification").TestNotification.from_dict(obj) - - raise ValueError("NotificationContent failed to lookup discriminator value from " + - json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + - ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) - - diff --git a/gooddata-api-client/gooddata_api_client/models/notification_data.py b/gooddata-api-client/gooddata_api_client/models/notification_data.py deleted file mode 100644 index d2fb81a79..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notification_data.py +++ /dev/null @@ -1,144 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.automation_notification import AutomationNotification -from gooddata_api_client.models.test_notification import TestNotification -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -NOTIFICATIONDATA_ONE_OF_SCHEMAS = ["AutomationNotification", "TestNotification"] - -class NotificationData(BaseModel): - """ - NotificationData - """ - # data type: AutomationNotification - oneof_schema_1_validator: Optional[AutomationNotification] = None - # data type: TestNotification - oneof_schema_2_validator: Optional[TestNotification] = None - actual_instance: Optional[Union[AutomationNotification, TestNotification]] = None - one_of_schemas: Set[str] = { "AutomationNotification", "TestNotification" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - discriminator_value_class_map: Dict[str, str] = { - } - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = NotificationData.model_construct() - error_messages = [] - match = 0 - # validate data type: AutomationNotification - if not isinstance(v, AutomationNotification): - error_messages.append(f"Error! Input type `{type(v)}` is not `AutomationNotification`") - else: - match += 1 - # validate data type: TestNotification - if not isinstance(v, TestNotification): - error_messages.append(f"Error! Input type `{type(v)}` is not `TestNotification`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in NotificationData with oneOf schemas: AutomationNotification, TestNotification. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AutomationNotification - try: - if match == 0: - instance.actual_instance = AutomationNotification.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into TestNotification - try: - if match == 0: - instance.actual_instance = TestNotification.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into NotificationData with oneOf schemas: AutomationNotification, TestNotification. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AutomationNotification, TestNotification]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/notification_filter.py b/gooddata-api-client/gooddata_api_client/models/notification_filter.py deleted file mode 100644 index dc5110868..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notification_filter.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class NotificationFilter(BaseModel): - """ - NotificationFilter - """ # noqa: E501 - filter: StrictStr - title: StrictStr - __properties: ClassVar[List[str]] = ["filter", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of NotificationFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of NotificationFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filter": obj.get("filter"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/notifications.py b/gooddata-api-client/gooddata_api_client/models/notifications.py deleted file mode 100644 index 22eb6d813..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notifications.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.notification import Notification -from gooddata_api_client.models.notifications_meta import NotificationsMeta -from typing import Optional, Set -from typing_extensions import Self - -class Notifications(BaseModel): - """ - Notifications - """ # noqa: E501 - data: List[Notification] - meta: NotificationsMeta - __properties: ClassVar[List[str]] = ["data", "meta"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Notifications from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - # override the default output from pydantic by calling `to_dict()` of meta - if self.meta: - _dict['meta'] = self.meta.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Notifications from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [Notification.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None, - "meta": NotificationsMeta.from_dict(obj["meta"]) if obj.get("meta") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/notifications_meta.py b/gooddata-api-client/gooddata_api_client/models/notifications_meta.py deleted file mode 100644 index 7bc99feec..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notifications_meta.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.notifications_meta_total import NotificationsMetaTotal -from typing import Optional, Set -from typing_extensions import Self - -class NotificationsMeta(BaseModel): - """ - NotificationsMeta - """ # noqa: E501 - total: Optional[NotificationsMetaTotal] = None - __properties: ClassVar[List[str]] = ["total"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of NotificationsMeta from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of total - if self.total: - _dict['total'] = self.total.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of NotificationsMeta from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "total": NotificationsMetaTotal.from_dict(obj["total"]) if obj.get("total") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/notifications_meta_total.py b/gooddata-api-client/gooddata_api_client/models/notifications_meta_total.py deleted file mode 100644 index 5901c699a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/notifications_meta_total.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictInt -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class NotificationsMetaTotal(BaseModel): - """ - NotificationsMetaTotal - """ # noqa: E501 - all: StrictInt - unread: StrictInt - __properties: ClassVar[List[str]] = ["all", "unread"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of NotificationsMetaTotal from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of NotificationsMetaTotal from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "all": obj.get("all"), - "unread": obj.get("unread") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/object_links.py b/gooddata-api-client/gooddata_api_client/models/object_links.py deleted file mode 100644 index 70f91157f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/object_links.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ObjectLinks(BaseModel): - """ - ObjectLinks - """ # noqa: E501 - var_self: StrictStr = Field(description="A string containing the link's URL.", alias="self") - __properties: ClassVar[List[str]] = ["self"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ObjectLinks from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ObjectLinks from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "self": obj.get("self") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/object_links_container.py b/gooddata-api-client/gooddata_api_client/models/object_links_container.py deleted file mode 100644 index 7a68bb302..000000000 --- a/gooddata-api-client/gooddata_api_client/models/object_links_container.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.object_links import ObjectLinks -from typing import Optional, Set -from typing_extensions import Self - -class ObjectLinksContainer(BaseModel): - """ - ObjectLinksContainer - """ # noqa: E501 - links: Optional[ObjectLinks] = None - __properties: ClassVar[List[str]] = ["links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ObjectLinksContainer from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ObjectLinksContainer from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "links": ObjectLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/open_ai_api_key_auth.py b/gooddata-api-client/gooddata_api_client/models/open_ai_api_key_auth.py deleted file mode 100644 index fbeaaf115..000000000 --- a/gooddata-api-client/gooddata_api_client/models/open_ai_api_key_auth.py +++ /dev/null @@ -1,104 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class OpenAiApiKeyAuth(BaseModel): - """ - OpenAiApiKeyAuth - """ # noqa: E501 - api_key: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="OpenAI API key.", alias="apiKey") - type: StrictStr = Field(description="Authentication type.") - __properties: ClassVar[List[str]] = ["apiKey", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['API_KEY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('API_KEY')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OpenAiApiKeyAuth from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if api_key (nullable) is None - # and model_fields_set contains the field - if self.api_key is None and "api_key" in self.model_fields_set: - _dict['apiKey'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OpenAiApiKeyAuth from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "apiKey": obj.get("apiKey"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/open_ai_provider_auth.py b/gooddata-api-client/gooddata_api_client/models/open_ai_provider_auth.py deleted file mode 100644 index 33694399c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/open_ai_provider_auth.py +++ /dev/null @@ -1,126 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.open_ai_api_key_auth import OpenAiApiKeyAuth -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -OPENAIPROVIDERAUTH_ONE_OF_SCHEMAS = ["OpenAiApiKeyAuth"] - -class OpenAiProviderAuth(BaseModel): - """ - Authentication configuration. - """ - # data type: OpenAiApiKeyAuth - oneof_schema_1_validator: Optional[OpenAiApiKeyAuth] = None - actual_instance: Optional[Union[OpenAiApiKeyAuth]] = None - one_of_schemas: Set[str] = { "OpenAiApiKeyAuth" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = OpenAiProviderAuth.model_construct() - error_messages = [] - match = 0 - # validate data type: OpenAiApiKeyAuth - if not isinstance(v, OpenAiApiKeyAuth): - error_messages.append(f"Error! Input type `{type(v)}` is not `OpenAiApiKeyAuth`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in OpenAiProviderAuth with oneOf schemas: OpenAiApiKeyAuth. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into OpenAiApiKeyAuth - try: - if match == 0: - instance.actual_instance = OpenAiApiKeyAuth.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into OpenAiProviderAuth with oneOf schemas: OpenAiApiKeyAuth. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], OpenAiApiKeyAuth]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/open_ai_provider_config.py b/gooddata-api-client/gooddata_api_client/models/open_ai_provider_config.py deleted file mode 100644 index fea7d1b35..000000000 --- a/gooddata-api-client/gooddata_api_client/models/open_ai_provider_config.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.open_ai_provider_auth import OpenAiProviderAuth -from typing import Optional, Set -from typing_extensions import Self - -class OpenAIProviderConfig(BaseModel): - """ - Configuration for OpenAI provider. - """ # noqa: E501 - auth: OpenAiProviderAuth - base_url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default='https://api.openai.com', description="Custom base URL for OpenAI API.", alias="baseUrl") - organization: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="OpenAI organization ID.") - type: StrictStr = Field(description="Provider type.") - __properties: ClassVar[List[str]] = ["auth", "baseUrl", "organization", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['OPENAI']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('OPENAI')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OpenAIProviderConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of auth - if self.auth: - _dict['auth'] = self.auth.to_dict() - # set to None if base_url (nullable) is None - # and model_fields_set contains the field - if self.base_url is None and "base_url" in self.model_fields_set: - _dict['baseUrl'] = None - - # set to None if organization (nullable) is None - # and model_fields_set contains the field - if self.organization is None and "organization" in self.model_fields_set: - _dict['organization'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OpenAIProviderConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "auth": OpenAiProviderAuth.from_dict(obj["auth"]) if obj.get("auth") is not None else None, - "baseUrl": obj.get("baseUrl") if obj.get("baseUrl") is not None else 'https://api.openai.com', - "organization": obj.get("organization"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/operation.py b/gooddata-api-client/gooddata_api_client/models/operation.py deleted file mode 100644 index 6d898766d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/operation.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from importlib import import_module -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from gooddata_api_client.models.failed_operation import FailedOperation - from gooddata_api_client.models.pending_operation import PendingOperation - from gooddata_api_client.models.succeeded_operation import SucceededOperation - -class Operation(BaseModel): - """ - Represents a Long-Running Operation: a process that takes some time to complete. - """ # noqa: E501 - id: StrictStr = Field(description="Id of the operation") - kind: StrictStr = Field(description="Type of the long-running operation. * `provision-database` — Provisioning of an AI Lake database. * `deprovision-database` — Deprovisioning (deletion) of an AI Lake database. * `run-service-command` — Running a command in a particular AI Lake service. ") - status: StrictStr - __properties: ClassVar[List[str]] = ["id", "kind", "status"] - - @field_validator('kind') - def kind_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['provision-database', 'deprovision-database', 'run-service-command']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('provision-database', 'deprovision-database', 'run-service-command')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - # JSON field name that stores the object type - __discriminator_property_name: ClassVar[str] = 'status' - - # discriminator mappings - __discriminator_value_class_map: ClassVar[Dict[str, str]] = { - 'failed': 'FailedOperation','pending': 'PendingOperation','succeeded': 'SucceededOperation' - } - - @classmethod - def get_discriminator_value(cls, obj: Dict[str, Any]) -> Optional[str]: - """Returns the discriminator value (object type) of the data""" - discriminator_value = obj[cls.__discriminator_property_name] - if discriminator_value: - return cls.__discriminator_value_class_map.get(discriminator_value) - else: - return None - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Union[FailedOperation, PendingOperation, SucceededOperation]]: - """Create an instance of Operation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Dict[str, Any]) -> Optional[Union[FailedOperation, PendingOperation, SucceededOperation]]: - """Create an instance of Operation from a dict""" - # look up the object type based on discriminator mapping - object_type = cls.get_discriminator_value(obj) - if object_type == 'FailedOperation': - return import_module("gooddata_api_client.models.failed_operation").FailedOperation.from_dict(obj) - if object_type == 'PendingOperation': - return import_module("gooddata_api_client.models.pending_operation").PendingOperation.from_dict(obj) - if object_type == 'SucceededOperation': - return import_module("gooddata_api_client.models.succeeded_operation").SucceededOperation.from_dict(obj) - - raise ValueError("Operation failed to lookup discriminator value from " + - json.dumps(obj) + ". Discriminator property name: " + cls.__discriminator_property_name + - ", mapping: " + json.dumps(cls.__discriminator_value_class_map)) - - diff --git a/gooddata-api-client/gooddata_api_client/models/operation_error.py b/gooddata-api-client/gooddata_api_client/models/operation_error.py deleted file mode 100644 index 6d0937137..000000000 --- a/gooddata-api-client/gooddata_api_client/models/operation_error.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class OperationError(BaseModel): - """ - Error information for a failed operation - """ # noqa: E501 - detail: StrictStr = Field(description="Human-readable error details") - status: StrictInt = Field(description="HTTP status code") - title: StrictStr = Field(description="Human-readable error name") - __properties: ClassVar[List[str]] = ["detail", "status", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OperationError from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OperationError from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "detail": obj.get("detail"), - "status": obj.get("status"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/organization_automation_identifier.py b/gooddata-api-client/gooddata_api_client/models/organization_automation_identifier.py deleted file mode 100644 index 7ca48cd47..000000000 --- a/gooddata-api-client/gooddata_api_client/models/organization_automation_identifier.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class OrganizationAutomationIdentifier(BaseModel): - """ - OrganizationAutomationIdentifier - """ # noqa: E501 - id: StrictStr - workspace_id: StrictStr = Field(alias="workspaceId") - __properties: ClassVar[List[str]] = ["id", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OrganizationAutomationIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OrganizationAutomationIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/organization_automation_management_bulk_request.py b/gooddata-api-client/gooddata_api_client/models/organization_automation_management_bulk_request.py deleted file mode 100644 index 95923e903..000000000 --- a/gooddata-api-client/gooddata_api_client/models/organization_automation_management_bulk_request.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.organization_automation_identifier import OrganizationAutomationIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class OrganizationAutomationManagementBulkRequest(BaseModel): - """ - OrganizationAutomationManagementBulkRequest - """ # noqa: E501 - automations: List[OrganizationAutomationIdentifier] - __properties: ClassVar[List[str]] = ["automations"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OrganizationAutomationManagementBulkRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in automations (list) - _items = [] - if self.automations: - for _item_automations in self.automations: - if _item_automations: - _items.append(_item_automations.to_dict()) - _dict['automations'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OrganizationAutomationManagementBulkRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "automations": [OrganizationAutomationIdentifier.from_dict(_item) for _item in obj["automations"]] if obj.get("automations") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/organization_permission_assignment.py b/gooddata-api-client/gooddata_api_client/models/organization_permission_assignment.py deleted file mode 100644 index 59d39ccbb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/organization_permission_assignment.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class OrganizationPermissionAssignment(BaseModel): - """ - Organization permission assignments - """ # noqa: E501 - assignee_identifier: AssigneeIdentifier = Field(alias="assigneeIdentifier") - permissions: List[StrictStr] - __properties: ClassVar[List[str]] = ["assigneeIdentifier", "permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['MANAGE', 'SELF_CREATE_TOKEN', 'BASE_UI_ACCESS']): - raise ValueError("each list item must be one of ('MANAGE', 'SELF_CREATE_TOKEN', 'BASE_UI_ACCESS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OrganizationPermissionAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee_identifier - if self.assignee_identifier: - _dict['assigneeIdentifier'] = self.assignee_identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OrganizationPermissionAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assigneeIdentifier": AssigneeIdentifier.from_dict(obj["assigneeIdentifier"]) if obj.get("assigneeIdentifier") is not None else None, - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/outlier_detection_request.py b/gooddata-api-client/gooddata_api_client/models/outlier_detection_request.py deleted file mode 100644 index 27c3e250c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/outlier_detection_request.py +++ /dev/null @@ -1,146 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.attribute_item import AttributeItem -from gooddata_api_client.models.change_analysis_params_filters_inner import ChangeAnalysisParamsFiltersInner -from gooddata_api_client.models.measure_item import MeasureItem -from typing import Optional, Set -from typing_extensions import Self - -class OutlierDetectionRequest(BaseModel): - """ - OutlierDetectionRequest - """ # noqa: E501 - attributes: List[AttributeItem] = Field(description="Attributes to be used in the computation.") - aux_measures: Optional[List[MeasureItem]] = Field(default=None, description="Metrics to be referenced from other AFM objects (e.g. filters) but not included in the result.", alias="auxMeasures") - filters: List[ChangeAnalysisParamsFiltersInner] = Field(description="Various filter types to filter the execution result.") - granularity: StrictStr = Field(description="Date granularity for anomaly detection. Only time-based granularities are supported (HOUR, DAY, WEEK, MONTH, QUARTER, YEAR).") - measures: Annotated[List[MeasureItem], Field(min_length=1)] - sensitivity: StrictStr = Field(description="Sensitivity level for outlier detection") - __properties: ClassVar[List[str]] = ["attributes", "auxMeasures", "filters", "granularity", "measures", "sensitivity"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR')") - return value - - @field_validator('sensitivity') - def sensitivity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['LOW', 'MEDIUM', 'HIGH']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('LOW', 'MEDIUM', 'HIGH')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OutlierDetectionRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in aux_measures (list) - _items = [] - if self.aux_measures: - for _item_aux_measures in self.aux_measures: - if _item_aux_measures: - _items.append(_item_aux_measures.to_dict()) - _dict['auxMeasures'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in measures (list) - _items = [] - if self.measures: - for _item_measures in self.measures: - if _item_measures: - _items.append(_item_measures.to_dict()) - _dict['measures'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OutlierDetectionRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": [AttributeItem.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None, - "auxMeasures": [MeasureItem.from_dict(_item) for _item in obj["auxMeasures"]] if obj.get("auxMeasures") is not None else None, - "filters": [ChangeAnalysisParamsFiltersInner.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "granularity": obj.get("granularity"), - "measures": [MeasureItem.from_dict(_item) for _item in obj["measures"]] if obj.get("measures") is not None else None, - "sensitivity": obj.get("sensitivity") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/outlier_detection_response.py b/gooddata-api-client/gooddata_api_client/models/outlier_detection_response.py deleted file mode 100644 index f0d83d2fa..000000000 --- a/gooddata-api-client/gooddata_api_client/models/outlier_detection_response.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_links import ExecutionLinks -from typing import Optional, Set -from typing_extensions import Self - -class OutlierDetectionResponse(BaseModel): - """ - OutlierDetectionResponse - """ # noqa: E501 - links: ExecutionLinks - __properties: ClassVar[List[str]] = ["links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OutlierDetectionResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OutlierDetectionResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "links": ExecutionLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/outlier_detection_result.py b/gooddata-api-client/gooddata_api_client/models/outlier_detection_result.py deleted file mode 100644 index 600317f29..000000000 --- a/gooddata-api-client/gooddata_api_client/models/outlier_detection_result.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class OutlierDetectionResult(BaseModel): - """ - OutlierDetectionResult - """ # noqa: E501 - attribute: Optional[List[StrictStr]] = Field(description="Attribute values for outlier detection results.") - values: Optional[Dict[str, Optional[List[Optional[Union[StrictFloat, StrictInt]]]]]] = Field(description="Map of measure identifiers to their outlier detection values. Each value is a list of nullable numbers.") - __properties: ClassVar[List[str]] = ["attribute", "values"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of OutlierDetectionResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if attribute (nullable) is None - # and model_fields_set contains the field - if self.attribute is None and "attribute" in self.model_fields_set: - _dict['attribute'] = None - - # set to None if values (nullable) is None - # and model_fields_set contains the field - if self.values is None and "values" in self.model_fields_set: - _dict['values'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of OutlierDetectionResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": obj.get("attribute"), - "values": obj.get("values") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/over.py b/gooddata-api-client/gooddata_api_client/models/over.py deleted file mode 100644 index 4ed36cc7a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/over.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.identifier_ref import IdentifierRef -from typing import Optional, Set -from typing_extensions import Self - -class Over(BaseModel): - """ - Over - """ # noqa: E501 - attributes: List[IdentifierRef] - __properties: ClassVar[List[str]] = ["attributes"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Over from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in attributes (list) - _items = [] - if self.attributes: - for _item_attributes in self.attributes: - if _item_attributes: - _items.append(_item_attributes.to_dict()) - _dict['attributes'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Over from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributes": [IdentifierRef.from_dict(_item) for _item in obj["attributes"]] if obj.get("attributes") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/page_metadata.py b/gooddata-api-client/gooddata_api_client/models/page_metadata.py deleted file mode 100644 index 4896090d9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/page_metadata.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class PageMetadata(BaseModel): - """ - PageMetadata - """ # noqa: E501 - number: Optional[StrictInt] = Field(default=None, description="The number of the current page") - size: Optional[StrictInt] = Field(default=None, description="The size of the current page") - total_elements: Optional[StrictInt] = Field(default=None, description="The total number of elements", alias="totalElements") - total_pages: Optional[StrictInt] = Field(default=None, description="The total number of pages", alias="totalPages") - __properties: ClassVar[List[str]] = ["number", "size", "totalElements", "totalPages"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PageMetadata from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PageMetadata from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "number": obj.get("number"), - "size": obj.get("size"), - "totalElements": obj.get("totalElements"), - "totalPages": obj.get("totalPages") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/paging.py b/gooddata-api-client/gooddata_api_client/models/paging.py deleted file mode 100644 index 8a218c8f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/paging.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class Paging(BaseModel): - """ - Current page description. - """ # noqa: E501 - count: StrictInt = Field(description="Count of items in this page.") - next: Optional[StrictStr] = Field(default=None, description="Link to next page, or null if this is last page.") - offset: StrictInt = Field(description="Offset of this page.") - total: StrictInt = Field(description="Count of returnable items ignoring paging.") - __properties: ClassVar[List[str]] = ["count", "next", "offset", "total"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Paging from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Paging from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "count": obj.get("count"), - "next": obj.get("next"), - "offset": obj.get("offset"), - "total": obj.get("total") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/parameter.py b/gooddata-api-client/gooddata_api_client/models/parameter.py deleted file mode 100644 index 7c37f5ad1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/parameter.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class Parameter(BaseModel): - """ - Parameter - """ # noqa: E501 - name: StrictStr - value: StrictStr - __properties: ClassVar[List[str]] = ["name", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Parameter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Parameter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/patch_knowledge_document_request_dto.py b/gooddata-api-client/gooddata_api_client/models/patch_knowledge_document_request_dto.py deleted file mode 100644 index 6847513ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/patch_knowledge_document_request_dto.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class PatchKnowledgeDocumentRequestDto(BaseModel): - """ - PatchKnowledgeDocumentRequestDto - """ # noqa: E501 - is_disabled: Optional[StrictBool] = Field(default=None, alias="isDisabled") - scopes: Optional[List[StrictStr]] = None - title: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["isDisabled", "scopes", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PatchKnowledgeDocumentRequestDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PatchKnowledgeDocumentRequestDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "isDisabled": obj.get("isDisabled"), - "scopes": obj.get("scopes"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pdf_table_style.py b/gooddata-api-client/gooddata_api_client/models/pdf_table_style.py deleted file mode 100644 index 213ff2d35..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pdf_table_style.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.pdf_table_style_property import PdfTableStyleProperty -from typing import Optional, Set -from typing_extensions import Self - -class PdfTableStyle(BaseModel): - """ - Custom CSS styles for the table. (PDF, HTML) - """ # noqa: E501 - properties: Optional[List[PdfTableStyleProperty]] = Field(default=None, description="List of CSS properties.") - selector: StrictStr = Field(description="CSS selector where to apply given properties.") - __properties: ClassVar[List[str]] = ["properties", "selector"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PdfTableStyle from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in properties (list) - _items = [] - if self.properties: - for _item_properties in self.properties: - if _item_properties: - _items.append(_item_properties.to_dict()) - _dict['properties'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PdfTableStyle from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "properties": [PdfTableStyleProperty.from_dict(_item) for _item in obj["properties"]] if obj.get("properties") is not None else None, - "selector": obj.get("selector") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pdf_table_style_property.py b/gooddata-api-client/gooddata_api_client/models/pdf_table_style_property.py deleted file mode 100644 index bb31d16f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pdf_table_style_property.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class PdfTableStyleProperty(BaseModel): - """ - CSS property. - """ # noqa: E501 - key: StrictStr = Field(description="CSS property key.") - value: StrictStr = Field(description="CSS property value.") - __properties: ClassVar[List[str]] = ["key", "value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PdfTableStyleProperty from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PdfTableStyleProperty from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "key": obj.get("key"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pdm_ldm_request.py b/gooddata-api-client/gooddata_api_client/models/pdm_ldm_request.py deleted file mode 100644 index bdca6ad68..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pdm_ldm_request.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.declarative_table import DeclarativeTable -from gooddata_api_client.models.pdm_sql import PdmSql -from gooddata_api_client.models.table_override import TableOverride -from typing import Optional, Set -from typing_extensions import Self - -class PdmLdmRequest(BaseModel): - """ - PDM additions wrapper. - """ # noqa: E501 - sqls: Optional[List[PdmSql]] = Field(default=None, description="List of SQL datasets.") - table_overrides: Optional[List[TableOverride]] = Field(default=None, description="(BETA) List of table overrides.", alias="tableOverrides") - tables: Optional[List[DeclarativeTable]] = Field(default=None, description="List of physical database tables.") - __properties: ClassVar[List[str]] = ["sqls", "tableOverrides", "tables"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PdmLdmRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in sqls (list) - _items = [] - if self.sqls: - for _item_sqls in self.sqls: - if _item_sqls: - _items.append(_item_sqls.to_dict()) - _dict['sqls'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in table_overrides (list) - _items = [] - if self.table_overrides: - for _item_table_overrides in self.table_overrides: - if _item_table_overrides: - _items.append(_item_table_overrides.to_dict()) - _dict['tableOverrides'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tables (list) - _items = [] - if self.tables: - for _item_tables in self.tables: - if _item_tables: - _items.append(_item_tables.to_dict()) - _dict['tables'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PdmLdmRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sqls": [PdmSql.from_dict(_item) for _item in obj["sqls"]] if obj.get("sqls") is not None else None, - "tableOverrides": [TableOverride.from_dict(_item) for _item in obj["tableOverrides"]] if obj.get("tableOverrides") is not None else None, - "tables": [DeclarativeTable.from_dict(_item) for _item in obj["tables"]] if obj.get("tables") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pdm_sql.py b/gooddata-api-client/gooddata_api_client/models/pdm_sql.py deleted file mode 100644 index 6b6a8b815..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pdm_sql.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.sql_column import SqlColumn -from typing import Optional, Set -from typing_extensions import Self - -class PdmSql(BaseModel): - """ - SQL dataset definition. - """ # noqa: E501 - columns: Optional[List[SqlColumn]] = Field(default=None, description="Columns defining SQL dataset.") - statement: StrictStr = Field(description="SQL statement.") - title: StrictStr = Field(description="SQL dataset title.") - __properties: ClassVar[List[str]] = ["columns", "statement", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PdmSql from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in columns (list) - _items = [] - if self.columns: - for _item_columns in self.columns: - if _item_columns: - _items.append(_item_columns.to_dict()) - _dict['columns'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PdmSql from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columns": [SqlColumn.from_dict(_item) for _item in obj["columns"]] if obj.get("columns") is not None else None, - "statement": obj.get("statement"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pending_operation.py b/gooddata-api-client/gooddata_api_client/models/pending_operation.py deleted file mode 100644 index 31d24205f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pending_operation.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.operation import Operation -from typing import Optional, Set -from typing_extensions import Self - -class PendingOperation(Operation): - """ - Operation that is still pending - """ # noqa: E501 - __properties: ClassVar[List[str]] = ["id", "kind", "status"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PendingOperation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PendingOperation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "kind": obj.get("kind"), - "status": obj.get("status") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/permissions_assignment.py b/gooddata-api-client/gooddata_api_client/models/permissions_assignment.py deleted file mode 100644 index 053ee8c8e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/permissions_assignment.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from gooddata_api_client.models.user_management_data_source_permission_assignment import UserManagementDataSourcePermissionAssignment -from gooddata_api_client.models.user_management_workspace_permission_assignment import UserManagementWorkspacePermissionAssignment -from typing import Optional, Set -from typing_extensions import Self - -class PermissionsAssignment(BaseModel): - """ - PermissionsAssignment - """ # noqa: E501 - assignees: List[AssigneeIdentifier] - data_sources: Optional[List[UserManagementDataSourcePermissionAssignment]] = Field(default=None, alias="dataSources") - workspaces: Optional[List[UserManagementWorkspacePermissionAssignment]] = None - __properties: ClassVar[List[str]] = ["assignees", "dataSources", "workspaces"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PermissionsAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in assignees (list) - _items = [] - if self.assignees: - for _item_assignees in self.assignees: - if _item_assignees: - _items.append(_item_assignees.to_dict()) - _dict['assignees'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in data_sources (list) - _items = [] - if self.data_sources: - for _item_data_sources in self.data_sources: - if _item_data_sources: - _items.append(_item_data_sources.to_dict()) - _dict['dataSources'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspaces (list) - _items = [] - if self.workspaces: - for _item_workspaces in self.workspaces: - if _item_workspaces: - _items.append(_item_workspaces.to_dict()) - _dict['workspaces'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PermissionsAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assignees": [AssigneeIdentifier.from_dict(_item) for _item in obj["assignees"]] if obj.get("assignees") is not None else None, - "dataSources": [UserManagementDataSourcePermissionAssignment.from_dict(_item) for _item in obj["dataSources"]] if obj.get("dataSources") is not None else None, - "workspaces": [UserManagementWorkspacePermissionAssignment.from_dict(_item) for _item in obj["workspaces"]] if obj.get("workspaces") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/permissions_for_assignee.py b/gooddata-api-client/gooddata_api_client/models/permissions_for_assignee.py deleted file mode 100644 index 2aa6a36f2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/permissions_for_assignee.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class PermissionsForAssignee(BaseModel): - """ - Desired levels of permissions for an assignee identified by an identifier. - """ # noqa: E501 - permissions: List[StrictStr] - assignee_identifier: AssigneeIdentifier = Field(alias="assigneeIdentifier") - __properties: ClassVar[List[str]] = ["permissions", "assigneeIdentifier"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['EDIT', 'SHARE', 'VIEW']): - raise ValueError("each list item must be one of ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PermissionsForAssignee from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee_identifier - if self.assignee_identifier: - _dict['assigneeIdentifier'] = self.assignee_identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PermissionsForAssignee from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": obj.get("permissions"), - "assigneeIdentifier": AssigneeIdentifier.from_dict(obj["assigneeIdentifier"]) if obj.get("assigneeIdentifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/permissions_for_assignee_rule.py b/gooddata-api-client/gooddata_api_client/models/permissions_for_assignee_rule.py deleted file mode 100644 index 5745963c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/permissions_for_assignee_rule.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.assignee_rule import AssigneeRule -from typing import Optional, Set -from typing_extensions import Self - -class PermissionsForAssigneeRule(BaseModel): - """ - Desired levels of permissions for a collection of assignees identified by a rule. - """ # noqa: E501 - permissions: List[StrictStr] - assignee_rule: AssigneeRule = Field(alias="assigneeRule") - __properties: ClassVar[List[str]] = ["permissions", "assigneeRule"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['EDIT', 'SHARE', 'VIEW']): - raise ValueError("each list item must be one of ('EDIT', 'SHARE', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PermissionsForAssigneeRule from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee_rule - if self.assignee_rule: - _dict['assigneeRule'] = self.assignee_rule.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PermissionsForAssigneeRule from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": obj.get("permissions"), - "assigneeRule": AssigneeRule.from_dict(obj["assigneeRule"]) if obj.get("assigneeRule") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/platform_usage.py b/gooddata-api-client/gooddata_api_client/models/platform_usage.py deleted file mode 100644 index 193345cf1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/platform_usage.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class PlatformUsage(BaseModel): - """ - PlatformUsage - """ # noqa: E501 - count: Optional[StrictInt] = None - name: StrictStr - __properties: ClassVar[List[str]] = ["count", "name"] - - @field_validator('name') - def name_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['UserCount', 'WorkspaceCount']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('UserCount', 'WorkspaceCount')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PlatformUsage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PlatformUsage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "count": obj.get("count"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/platform_usage_request.py b/gooddata-api-client/gooddata_api_client/models/platform_usage_request.py deleted file mode 100644 index cee8eec2b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/platform_usage_request.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class PlatformUsageRequest(BaseModel): - """ - PlatformUsageRequest - """ # noqa: E501 - usage_item_names: List[StrictStr] = Field(alias="usageItemNames") - __properties: ClassVar[List[str]] = ["usageItemNames"] - - @field_validator('usage_item_names') - def usage_item_names_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['UserCount', 'WorkspaceCount']): - raise ValueError("each list item must be one of ('UserCount', 'WorkspaceCount')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PlatformUsageRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PlatformUsageRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "usageItemNames": obj.get("usageItemNames") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_dataset.py b/gooddata-api-client/gooddata_api_client/models/pop_dataset.py deleted file mode 100644 index bd17ef667..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_dataset.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_dataset import AfmObjectIdentifierDataset -from typing import Optional, Set -from typing_extensions import Self - -class PopDataset(BaseModel): - """ - Combination of the date data set to use and how many periods ago to calculate the previous period for. - """ # noqa: E501 - dataset: AfmObjectIdentifierDataset - periods_ago: StrictInt = Field(description="Number of periods ago to calculate the previous period for.", alias="periodsAgo") - __properties: ClassVar[List[str]] = ["dataset", "periodsAgo"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PopDataset from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PopDataset from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataset": AfmObjectIdentifierDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "periodsAgo": obj.get("periodsAgo") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition.py b/gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition.py deleted file mode 100644 index 7a0ffffa1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.pop_dataset_measure_definition_previous_period_measure import PopDatasetMeasureDefinitionPreviousPeriodMeasure -from typing import Optional, Set -from typing_extensions import Self - -class PopDatasetMeasureDefinition(BaseModel): - """ - Previous period type of metric. - """ # noqa: E501 - previous_period_measure: PopDatasetMeasureDefinitionPreviousPeriodMeasure = Field(alias="previousPeriodMeasure") - __properties: ClassVar[List[str]] = ["previousPeriodMeasure"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PopDatasetMeasureDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of previous_period_measure - if self.previous_period_measure: - _dict['previousPeriodMeasure'] = self.previous_period_measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PopDatasetMeasureDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "previousPeriodMeasure": PopDatasetMeasureDefinitionPreviousPeriodMeasure.from_dict(obj["previousPeriodMeasure"]) if obj.get("previousPeriodMeasure") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition_previous_period_measure.py b/gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition_previous_period_measure.py deleted file mode 100644 index 67903b39f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_dataset_measure_definition_previous_period_measure.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_local_identifier import AfmLocalIdentifier -from gooddata_api_client.models.pop_dataset import PopDataset -from typing import Optional, Set -from typing_extensions import Self - -class PopDatasetMeasureDefinitionPreviousPeriodMeasure(BaseModel): - """ - PopDatasetMeasureDefinitionPreviousPeriodMeasure - """ # noqa: E501 - date_datasets: List[PopDataset] = Field(description="Specification of which date data sets to use for determining the period to calculate the previous period for.", alias="dateDatasets") - measure_identifier: AfmLocalIdentifier = Field(alias="measureIdentifier") - __properties: ClassVar[List[str]] = ["dateDatasets", "measureIdentifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PopDatasetMeasureDefinitionPreviousPeriodMeasure from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in date_datasets (list) - _items = [] - if self.date_datasets: - for _item_date_datasets in self.date_datasets: - if _item_date_datasets: - _items.append(_item_date_datasets.to_dict()) - _dict['dateDatasets'] = _items - # override the default output from pydantic by calling `to_dict()` of measure_identifier - if self.measure_identifier: - _dict['measureIdentifier'] = self.measure_identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PopDatasetMeasureDefinitionPreviousPeriodMeasure from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dateDatasets": [PopDataset.from_dict(_item) for _item in obj["dateDatasets"]] if obj.get("dateDatasets") is not None else None, - "measureIdentifier": AfmLocalIdentifier.from_dict(obj["measureIdentifier"]) if obj.get("measureIdentifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_date.py b/gooddata-api-client/gooddata_api_client/models/pop_date.py deleted file mode 100644 index e1df4841e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_date.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_object_identifier_attribute import AfmObjectIdentifierAttribute -from typing import Optional, Set -from typing_extensions import Self - -class PopDate(BaseModel): - """ - Combination of the date attribute to use and how many periods ago to calculate the PoP for. - """ # noqa: E501 - attribute: AfmObjectIdentifierAttribute - periods_ago: StrictInt = Field(description="Number of periods ago to calculate the previous period for.", alias="periodsAgo") - __properties: ClassVar[List[str]] = ["attribute", "periodsAgo"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PopDate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute - if self.attribute: - _dict['attribute'] = self.attribute.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PopDate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": AfmObjectIdentifierAttribute.from_dict(obj["attribute"]) if obj.get("attribute") is not None else None, - "periodsAgo": obj.get("periodsAgo") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition.py b/gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition.py deleted file mode 100644 index 32946d892..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.pop_date_measure_definition_over_period_measure import PopDateMeasureDefinitionOverPeriodMeasure -from typing import Optional, Set -from typing_extensions import Self - -class PopDateMeasureDefinition(BaseModel): - """ - Period over period type of metric. - """ # noqa: E501 - over_period_measure: PopDateMeasureDefinitionOverPeriodMeasure = Field(alias="overPeriodMeasure") - __properties: ClassVar[List[str]] = ["overPeriodMeasure"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PopDateMeasureDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of over_period_measure - if self.over_period_measure: - _dict['overPeriodMeasure'] = self.over_period_measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PopDateMeasureDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "overPeriodMeasure": PopDateMeasureDefinitionOverPeriodMeasure.from_dict(obj["overPeriodMeasure"]) if obj.get("overPeriodMeasure") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition_over_period_measure.py b/gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition_over_period_measure.py deleted file mode 100644 index 5033cabdb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_date_measure_definition_over_period_measure.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm_local_identifier import AfmLocalIdentifier -from gooddata_api_client.models.pop_date import PopDate -from typing import Optional, Set -from typing_extensions import Self - -class PopDateMeasureDefinitionOverPeriodMeasure(BaseModel): - """ - PopDateMeasureDefinitionOverPeriodMeasure - """ # noqa: E501 - date_attributes: List[PopDate] = Field(description="Attributes to use for determining the period to calculate the PoP for.", alias="dateAttributes") - measure_identifier: AfmLocalIdentifier = Field(alias="measureIdentifier") - __properties: ClassVar[List[str]] = ["dateAttributes", "measureIdentifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PopDateMeasureDefinitionOverPeriodMeasure from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in date_attributes (list) - _items = [] - if self.date_attributes: - for _item_date_attributes in self.date_attributes: - if _item_date_attributes: - _items.append(_item_date_attributes.to_dict()) - _dict['dateAttributes'] = _items - # override the default output from pydantic by calling `to_dict()` of measure_identifier - if self.measure_identifier: - _dict['measureIdentifier'] = self.measure_identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PopDateMeasureDefinitionOverPeriodMeasure from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dateAttributes": [PopDate.from_dict(_item) for _item in obj["dateAttributes"]] if obj.get("dateAttributes") is not None else None, - "measureIdentifier": AfmLocalIdentifier.from_dict(obj["measureIdentifier"]) if obj.get("measureIdentifier") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/pop_measure_definition.py b/gooddata-api-client/gooddata_api_client/models/pop_measure_definition.py deleted file mode 100644 index 3cc29e0af..000000000 --- a/gooddata-api-client/gooddata_api_client/models/pop_measure_definition.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.pop_dataset_measure_definition import PopDatasetMeasureDefinition -from gooddata_api_client.models.pop_date_measure_definition import PopDateMeasureDefinition -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -POPMEASUREDEFINITION_ONE_OF_SCHEMAS = ["PopDatasetMeasureDefinition", "PopDateMeasureDefinition"] - -class PopMeasureDefinition(BaseModel): - """ - PopMeasureDefinition - """ - # data type: PopDatasetMeasureDefinition - oneof_schema_1_validator: Optional[PopDatasetMeasureDefinition] = None - # data type: PopDateMeasureDefinition - oneof_schema_2_validator: Optional[PopDateMeasureDefinition] = None - actual_instance: Optional[Union[PopDatasetMeasureDefinition, PopDateMeasureDefinition]] = None - one_of_schemas: Set[str] = { "PopDatasetMeasureDefinition", "PopDateMeasureDefinition" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = PopMeasureDefinition.model_construct() - error_messages = [] - match = 0 - # validate data type: PopDatasetMeasureDefinition - if not isinstance(v, PopDatasetMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `PopDatasetMeasureDefinition`") - else: - match += 1 - # validate data type: PopDateMeasureDefinition - if not isinstance(v, PopDateMeasureDefinition): - error_messages.append(f"Error! Input type `{type(v)}` is not `PopDateMeasureDefinition`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in PopMeasureDefinition with oneOf schemas: PopDatasetMeasureDefinition, PopDateMeasureDefinition. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into PopDatasetMeasureDefinition - try: - if match == 0: - instance.actual_instance = PopDatasetMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into PopDateMeasureDefinition - try: - if match == 0: - instance.actual_instance = PopDateMeasureDefinition.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into PopMeasureDefinition with oneOf schemas: PopDatasetMeasureDefinition, PopDateMeasureDefinition. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], PopDatasetMeasureDefinition, PopDateMeasureDefinition]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/positive_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/positive_attribute_filter.py deleted file mode 100644 index 29adfa44b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/positive_attribute_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.positive_attribute_filter_positive_attribute_filter import PositiveAttributeFilterPositiveAttributeFilter -from typing import Optional, Set -from typing_extensions import Self - -class PositiveAttributeFilter(BaseModel): - """ - Filter able to limit element values by label and related selected elements. - """ # noqa: E501 - positive_attribute_filter: PositiveAttributeFilterPositiveAttributeFilter = Field(alias="positiveAttributeFilter") - __properties: ClassVar[List[str]] = ["positiveAttributeFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PositiveAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of positive_attribute_filter - if self.positive_attribute_filter: - _dict['positiveAttributeFilter'] = self.positive_attribute_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PositiveAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "positiveAttributeFilter": PositiveAttributeFilterPositiveAttributeFilter.from_dict(obj["positiveAttributeFilter"]) if obj.get("positiveAttributeFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/positive_attribute_filter_positive_attribute_filter.py b/gooddata-api-client/gooddata_api_client/models/positive_attribute_filter_positive_attribute_filter.py deleted file mode 100644 index 9f3e1c2ae..000000000 --- a/gooddata-api-client/gooddata_api_client/models/positive_attribute_filter_positive_attribute_filter.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from gooddata_api_client.models.attribute_filter_elements import AttributeFilterElements -from typing import Optional, Set -from typing_extensions import Self - -class PositiveAttributeFilterPositiveAttributeFilter(BaseModel): - """ - PositiveAttributeFilterPositiveAttributeFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - var_in: AttributeFilterElements = Field(alias="in") - label: AfmIdentifier - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - __properties: ClassVar[List[str]] = ["applyOnResult", "in", "label", "localIdentifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of PositiveAttributeFilterPositiveAttributeFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of var_in - if self.var_in: - _dict['in'] = self.var_in.to_dict() - # override the default output from pydantic by calling `to_dict()` of label - if self.label: - _dict['label'] = self.label.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of PositiveAttributeFilterPositiveAttributeFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "in": AttributeFilterElements.from_dict(obj["in"]) if obj.get("in") is not None else None, - "label": AfmIdentifier.from_dict(obj["label"]) if obj.get("label") is not None else None, - "localIdentifier": obj.get("localIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/provision_database_instance_request.py b/gooddata-api-client/gooddata_api_client/models/provision_database_instance_request.py deleted file mode 100644 index 1907c6c98..000000000 --- a/gooddata-api-client/gooddata_api_client/models/provision_database_instance_request.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ProvisionDatabaseInstanceRequest(BaseModel): - """ - Request to provision a new AILake Database instance - """ # noqa: E501 - name: StrictStr = Field(description="Name of the database instance") - storage_ids: List[StrictStr] = Field(description="Set of ids of the storage instances this database instance should access.", alias="storageIds") - __properties: ClassVar[List[str]] = ["name", "storageIds"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ProvisionDatabaseInstanceRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ProvisionDatabaseInstanceRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "storageIds": obj.get("storageIds") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/quality_issue.py b/gooddata-api-client/gooddata_api_client/models/quality_issue.py deleted file mode 100644 index af575bbf0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/quality_issue.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.quality_issue_object import QualityIssueObject -from typing import Optional, Set -from typing_extensions import Self - -class QualityIssue(BaseModel): - """ - List of quality issues (available when status is COMPLETED) - """ # noqa: E501 - code: StrictStr = Field(description="Quality issue code") - detail: Dict[str, Dict[str, Any]] = Field(description="Detailed information about the quality issue") - id: StrictStr = Field(description="Unique identifier for the quality issue") - objects: List[QualityIssueObject] = Field(description="List of objects affected by this quality issue") - severity: StrictStr = Field(description="Severity level") - __properties: ClassVar[List[str]] = ["code", "detail", "id", "objects", "severity"] - - @field_validator('severity') - def severity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['WARNING', 'INFO']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('WARNING', 'INFO')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of QualityIssue from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in objects (list) - _items = [] - if self.objects: - for _item_objects in self.objects: - if _item_objects: - _items.append(_item_objects.to_dict()) - _dict['objects'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of QualityIssue from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "code": obj.get("code"), - "detail": obj.get("detail"), - "id": obj.get("id"), - "objects": [QualityIssueObject.from_dict(_item) for _item in obj["objects"]] if obj.get("objects") is not None else None, - "severity": obj.get("severity") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/quality_issue_object.py b/gooddata-api-client/gooddata_api_client/models/quality_issue_object.py deleted file mode 100644 index 166347d71..000000000 --- a/gooddata-api-client/gooddata_api_client/models/quality_issue_object.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class QualityIssueObject(BaseModel): - """ - List of objects affected by this quality issue - """ # noqa: E501 - id: StrictStr = Field(description="Object ID") - title: StrictStr = Field(description="Object title") - type: StrictStr = Field(description="Object type") - workspace_id: StrictStr = Field(description="Workspace ID where the object belongs", alias="workspaceId") - __properties: ClassVar[List[str]] = ["id", "title", "type", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of QualityIssueObject from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of QualityIssueObject from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title"), - "type": obj.get("type"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/quality_issues_calculation_status_response.py b/gooddata-api-client/gooddata_api_client/models/quality_issues_calculation_status_response.py deleted file mode 100644 index 73bec5439..000000000 --- a/gooddata-api-client/gooddata_api_client/models/quality_issues_calculation_status_response.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.quality_issue import QualityIssue -from typing import Optional, Set -from typing_extensions import Self - -class QualityIssuesCalculationStatusResponse(BaseModel): - """ - QualityIssuesCalculationStatusResponse - """ # noqa: E501 - error: Optional[StrictStr] = Field(default=None, description="Error message (available when status is FAILED or NOT_FOUND)") - issues: Optional[List[QualityIssue]] = Field(default=None, description="List of quality issues (available when status is COMPLETED)") - status: StrictStr = Field(description="Current status of the calculation") - __properties: ClassVar[List[str]] = ["error", "issues", "status"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RUNNING', 'SYNCING', 'COMPLETED', 'FAILED', 'CANCELLED', 'NOT_FOUND', 'DISABLED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RUNNING', 'SYNCING', 'COMPLETED', 'FAILED', 'CANCELLED', 'NOT_FOUND', 'DISABLED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of QualityIssuesCalculationStatusResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in issues (list) - _items = [] - if self.issues: - for _item_issues in self.issues: - if _item_issues: - _items.append(_item_issues.to_dict()) - _dict['issues'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of QualityIssuesCalculationStatusResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "error": obj.get("error"), - "issues": [QualityIssue.from_dict(_item) for _item in obj["issues"]] if obj.get("issues") is not None else None, - "status": obj.get("status") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/range.py b/gooddata-api-client/gooddata_api_client/models/range.py deleted file mode 100644 index 4a73e23bc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/range.py +++ /dev/null @@ -1,113 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.local_identifier import LocalIdentifier -from gooddata_api_client.models.value import Value -from typing import Optional, Set -from typing_extensions import Self - -class Range(BaseModel): - """ - Range - """ # noqa: E501 - var_from: Value = Field(alias="from") - measure: LocalIdentifier - operator: StrictStr - to: Value - __properties: ClassVar[List[str]] = ["from", "measure", "operator", "to"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['BETWEEN', 'NOT_BETWEEN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('BETWEEN', 'NOT_BETWEEN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Range from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of var_from - if self.var_from: - _dict['from'] = self.var_from.to_dict() - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - # override the default output from pydantic by calling `to_dict()` of to - if self.to: - _dict['to'] = self.to.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Range from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "from": Value.from_dict(obj["from"]) if obj.get("from") is not None else None, - "measure": LocalIdentifier.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "operator": obj.get("operator"), - "to": Value.from_dict(obj["to"]) if obj.get("to") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/range_condition.py b/gooddata-api-client/gooddata_api_client/models/range_condition.py deleted file mode 100644 index b20a33aa3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/range_condition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.range_condition_range import RangeConditionRange -from typing import Optional, Set -from typing_extensions import Self - -class RangeCondition(BaseModel): - """ - Condition that checks if the metric value is within a given range. - """ # noqa: E501 - range: RangeConditionRange - __properties: ClassVar[List[str]] = ["range"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RangeCondition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of range - if self.range: - _dict['range'] = self.range.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RangeCondition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "range": RangeConditionRange.from_dict(obj["range"]) if obj.get("range") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/range_condition_range.py b/gooddata-api-client/gooddata_api_client/models/range_condition_range.py deleted file mode 100644 index a965fffd2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/range_condition_range.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class RangeConditionRange(BaseModel): - """ - RangeConditionRange - """ # noqa: E501 - var_from: Union[StrictFloat, StrictInt] = Field(alias="from") - operator: StrictStr - to: Union[StrictFloat, StrictInt] - __properties: ClassVar[List[str]] = ["from", "operator", "to"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['BETWEEN', 'NOT_BETWEEN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('BETWEEN', 'NOT_BETWEEN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RangeConditionRange from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RangeConditionRange from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "from": obj.get("from"), - "operator": obj.get("operator"), - "to": obj.get("to") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/range_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/range_measure_value_filter.py deleted file mode 100644 index f74af4d02..000000000 --- a/gooddata-api-client/gooddata_api_client/models/range_measure_value_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.range_measure_value_filter_range_measure_value_filter import RangeMeasureValueFilterRangeMeasureValueFilter -from typing import Optional, Set -from typing_extensions import Self - -class RangeMeasureValueFilter(BaseModel): - """ - Filter the result by comparing specified metric to given range of values. - """ # noqa: E501 - range_measure_value_filter: RangeMeasureValueFilterRangeMeasureValueFilter = Field(alias="rangeMeasureValueFilter") - __properties: ClassVar[List[str]] = ["rangeMeasureValueFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RangeMeasureValueFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of range_measure_value_filter - if self.range_measure_value_filter: - _dict['rangeMeasureValueFilter'] = self.range_measure_value_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RangeMeasureValueFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "rangeMeasureValueFilter": RangeMeasureValueFilterRangeMeasureValueFilter.from_dict(obj["rangeMeasureValueFilter"]) if obj.get("rangeMeasureValueFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/range_measure_value_filter_range_measure_value_filter.py b/gooddata-api-client/gooddata_api_client/models/range_measure_value_filter_range_measure_value_filter.py deleted file mode 100644 index 664ca6535..000000000 --- a/gooddata-api-client/gooddata_api_client/models/range_measure_value_filter_range_measure_value_filter.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional, Union -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class RangeMeasureValueFilterRangeMeasureValueFilter(BaseModel): - """ - RangeMeasureValueFilterRangeMeasureValueFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - dimensionality: Optional[List[AfmIdentifier]] = Field(default=None, description="References to the attributes to be used when filtering.") - var_from: Union[StrictFloat, StrictInt] = Field(alias="from") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - measure: AfmIdentifier - operator: StrictStr - to: Union[StrictFloat, StrictInt] - treat_null_values_as: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="A value that will be substituted for null values in the metric for the comparisons.", alias="treatNullValuesAs") - __properties: ClassVar[List[str]] = ["applyOnResult", "dimensionality", "from", "localIdentifier", "measure", "operator", "to", "treatNullValuesAs"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['BETWEEN', 'NOT_BETWEEN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('BETWEEN', 'NOT_BETWEEN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RangeMeasureValueFilterRangeMeasureValueFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimensionality (list) - _items = [] - if self.dimensionality: - for _item_dimensionality in self.dimensionality: - if _item_dimensionality: - _items.append(_item_dimensionality.to_dict()) - _dict['dimensionality'] = _items - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RangeMeasureValueFilterRangeMeasureValueFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "dimensionality": [AfmIdentifier.from_dict(_item) for _item in obj["dimensionality"]] if obj.get("dimensionality") is not None else None, - "from": obj.get("from"), - "localIdentifier": obj.get("localIdentifier"), - "measure": AfmIdentifier.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "operator": obj.get("operator"), - "to": obj.get("to"), - "treatNullValuesAs": obj.get("treatNullValuesAs") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/range_wrapper.py b/gooddata-api-client/gooddata_api_client/models/range_wrapper.py deleted file mode 100644 index 1601964ed..000000000 --- a/gooddata-api-client/gooddata_api_client/models/range_wrapper.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.range import Range -from typing import Optional, Set -from typing_extensions import Self - -class RangeWrapper(BaseModel): - """ - RangeWrapper - """ # noqa: E501 - range: Range - __properties: ClassVar[List[str]] = ["range"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RangeWrapper from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of range - if self.range: - _dict['range'] = self.range.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RangeWrapper from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "range": Range.from_dict(obj["range"]) if obj.get("range") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/ranking_filter.py b/gooddata-api-client/gooddata_api_client/models/ranking_filter.py deleted file mode 100644 index 903ff2a6b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/ranking_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.ranking_filter_ranking_filter import RankingFilterRankingFilter -from typing import Optional, Set -from typing_extensions import Self - -class RankingFilter(BaseModel): - """ - Filter the result on top/bottom N values according to given metric(s). - """ # noqa: E501 - ranking_filter: RankingFilterRankingFilter = Field(alias="rankingFilter") - __properties: ClassVar[List[str]] = ["rankingFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RankingFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of ranking_filter - if self.ranking_filter: - _dict['rankingFilter'] = self.ranking_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RankingFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "rankingFilter": RankingFilterRankingFilter.from_dict(obj["rankingFilter"]) if obj.get("rankingFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/ranking_filter_ranking_filter.py b/gooddata-api-client/gooddata_api_client/models/ranking_filter_ranking_filter.py deleted file mode 100644 index bd69d0c93..000000000 --- a/gooddata-api-client/gooddata_api_client/models/ranking_filter_ranking_filter.py +++ /dev/null @@ -1,121 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_identifier import AfmIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class RankingFilterRankingFilter(BaseModel): - """ - RankingFilterRankingFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - dimensionality: Optional[List[AfmIdentifier]] = Field(default=None, description="References to the attributes to be used when filtering.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - measures: List[AfmIdentifier] = Field(description="References to the metrics to be used when filtering.") - operator: StrictStr = Field(description="The type of ranking to use, TOP or BOTTOM.") - value: StrictInt = Field(description="Number of top/bottom values to filter.") - __properties: ClassVar[List[str]] = ["applyOnResult", "dimensionality", "localIdentifier", "measures", "operator", "value"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['TOP', 'BOTTOM']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TOP', 'BOTTOM')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RankingFilterRankingFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimensionality (list) - _items = [] - if self.dimensionality: - for _item_dimensionality in self.dimensionality: - if _item_dimensionality: - _items.append(_item_dimensionality.to_dict()) - _dict['dimensionality'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in measures (list) - _items = [] - if self.measures: - for _item_measures in self.measures: - if _item_measures: - _items.append(_item_measures.to_dict()) - _dict['measures'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RankingFilterRankingFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "dimensionality": [AfmIdentifier.from_dict(_item) for _item in obj["dimensionality"]] if obj.get("dimensionality") is not None else None, - "localIdentifier": obj.get("localIdentifier"), - "measures": [AfmIdentifier.from_dict(_item) for _item in obj["measures"]] if obj.get("measures") is not None else None, - "operator": obj.get("operator"), - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/raw_custom_label.py b/gooddata-api-client/gooddata_api_client/models/raw_custom_label.py deleted file mode 100644 index 766eab43d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/raw_custom_label.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class RawCustomLabel(BaseModel): - """ - Custom label object override. - """ # noqa: E501 - title: StrictStr = Field(description="Override value.") - __properties: ClassVar[List[str]] = ["title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RawCustomLabel from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RawCustomLabel from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/raw_custom_metric.py b/gooddata-api-client/gooddata_api_client/models/raw_custom_metric.py deleted file mode 100644 index 8f9bc0656..000000000 --- a/gooddata-api-client/gooddata_api_client/models/raw_custom_metric.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class RawCustomMetric(BaseModel): - """ - Custom metric object override. - """ # noqa: E501 - title: StrictStr = Field(description="Metric title override.") - __properties: ClassVar[List[str]] = ["title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RawCustomMetric from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RawCustomMetric from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/raw_custom_override.py b/gooddata-api-client/gooddata_api_client/models/raw_custom_override.py deleted file mode 100644 index e92d2f25f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/raw_custom_override.py +++ /dev/null @@ -1,116 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.raw_custom_label import RawCustomLabel -from gooddata_api_client.models.raw_custom_metric import RawCustomMetric -from typing import Optional, Set -from typing_extensions import Self - -class RawCustomOverride(BaseModel): - """ - Custom cell value overrides (IDs will be replaced with specified values). - """ # noqa: E501 - labels: Optional[Dict[str, RawCustomLabel]] = Field(default=None, description="Map of CustomLabels with keys used as placeholders in export result.") - metrics: Optional[Dict[str, RawCustomMetric]] = Field(default=None, description="Map of CustomMetrics with keys used as placeholders in export result.") - __properties: ClassVar[List[str]] = ["labels", "metrics"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RawCustomOverride from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each value in labels (dict) - _field_dict = {} - if self.labels: - for _key_labels in self.labels: - if self.labels[_key_labels]: - _field_dict[_key_labels] = self.labels[_key_labels].to_dict() - _dict['labels'] = _field_dict - # override the default output from pydantic by calling `to_dict()` of each value in metrics (dict) - _field_dict = {} - if self.metrics: - for _key_metrics in self.metrics: - if self.metrics[_key_metrics]: - _field_dict[_key_metrics] = self.metrics[_key_metrics].to_dict() - _dict['metrics'] = _field_dict - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RawCustomOverride from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "labels": dict( - (_k, RawCustomLabel.from_dict(_v)) - for _k, _v in obj["labels"].items() - ) - if obj.get("labels") is not None - else None, - "metrics": dict( - (_k, RawCustomMetric.from_dict(_v)) - for _k, _v in obj["metrics"].items() - ) - if obj.get("metrics") is not None - else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/raw_export_automation_request.py b/gooddata-api-client/gooddata_api_client/models/raw_export_automation_request.py deleted file mode 100644 index a3674eddb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/raw_export_automation_request.py +++ /dev/null @@ -1,136 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.afm import AFM -from gooddata_api_client.models.execution_settings import ExecutionSettings -from gooddata_api_client.models.raw_custom_override import RawCustomOverride -from typing import Optional, Set -from typing_extensions import Self - -class RawExportAutomationRequest(BaseModel): - """ - Export request object describing the export properties and overrides for raw exports. - """ # noqa: E501 - custom_override: Optional[RawCustomOverride] = Field(default=None, alias="customOverride") - delimiter: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=1)]] = Field(default=None, description="Set column delimiter. (CSV)") - execution: AFM - execution_settings: Optional[ExecutionSettings] = Field(default=None, alias="executionSettings") - file_name: StrictStr = Field(description="Filename of downloaded file without extension.", alias="fileName") - format: StrictStr = Field(description="Requested resulting file type.") - metadata: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - __properties: ClassVar[List[str]] = ["customOverride", "delimiter", "execution", "executionSettings", "fileName", "format", "metadata"] - - @field_validator('delimiter') - def delimiter_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^[^\r\n\"]$", value): - raise ValueError(r"must validate the regular expression /^[^\r\n\"]$/") - return value - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ARROW_FILE', 'ARROW_STREAM', 'CSV']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ARROW_FILE', 'ARROW_STREAM', 'CSV')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RawExportAutomationRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of custom_override - if self.custom_override: - _dict['customOverride'] = self.custom_override.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution - if self.execution: - _dict['execution'] = self.execution.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution_settings - if self.execution_settings: - _dict['executionSettings'] = self.execution_settings.to_dict() - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RawExportAutomationRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customOverride": RawCustomOverride.from_dict(obj["customOverride"]) if obj.get("customOverride") is not None else None, - "delimiter": obj.get("delimiter"), - "execution": AFM.from_dict(obj["execution"]) if obj.get("execution") is not None else None, - "executionSettings": ExecutionSettings.from_dict(obj["executionSettings"]) if obj.get("executionSettings") is not None else None, - "fileName": obj.get("fileName"), - "format": obj.get("format"), - "metadata": obj.get("metadata") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/raw_export_request.py b/gooddata-api-client/gooddata_api_client/models/raw_export_request.py deleted file mode 100644 index 0678931fe..000000000 --- a/gooddata-api-client/gooddata_api_client/models/raw_export_request.py +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.afm import AFM -from gooddata_api_client.models.execution_settings import ExecutionSettings -from gooddata_api_client.models.raw_custom_override import RawCustomOverride -from typing import Optional, Set -from typing_extensions import Self - -class RawExportRequest(BaseModel): - """ - Export request object describing the export properties and overrides for raw exports. - """ # noqa: E501 - custom_override: Optional[RawCustomOverride] = Field(default=None, alias="customOverride") - delimiter: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=1)]] = Field(default=None, description="Set column delimiter. (CSV)") - execution: AFM - execution_settings: Optional[ExecutionSettings] = Field(default=None, alias="executionSettings") - file_name: StrictStr = Field(description="Filename of downloaded file without extension.", alias="fileName") - format: StrictStr = Field(description="Requested resulting file type.") - __properties: ClassVar[List[str]] = ["customOverride", "delimiter", "execution", "executionSettings", "fileName", "format"] - - @field_validator('delimiter') - def delimiter_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^[^\r\n\"]$", value): - raise ValueError(r"must validate the regular expression /^[^\r\n\"]$/") - return value - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ARROW_FILE', 'ARROW_STREAM', 'CSV']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ARROW_FILE', 'ARROW_STREAM', 'CSV')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RawExportRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of custom_override - if self.custom_override: - _dict['customOverride'] = self.custom_override.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution - if self.execution: - _dict['execution'] = self.execution.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution_settings - if self.execution_settings: - _dict['executionSettings'] = self.execution_settings.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RawExportRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customOverride": RawCustomOverride.from_dict(obj["customOverride"]) if obj.get("customOverride") is not None else None, - "delimiter": obj.get("delimiter"), - "execution": AFM.from_dict(obj["execution"]) if obj.get("execution") is not None else None, - "executionSettings": ExecutionSettings.from_dict(obj["executionSettings"]) if obj.get("executionSettings") is not None else None, - "fileName": obj.get("fileName"), - "format": obj.get("format") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/reasoning.py b/gooddata-api-client/gooddata_api_client/models/reasoning.py deleted file mode 100644 index cb9080eb8..000000000 --- a/gooddata-api-client/gooddata_api_client/models/reasoning.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.reasoning_step import ReasoningStep -from typing import Optional, Set -from typing_extensions import Self - -class Reasoning(BaseModel): - """ - Reasoning wrapper containing steps taken during request handling. - """ # noqa: E501 - answer: Optional[StrictStr] = Field(default=None, description="Final answer/reasoning from the use case result.") - steps: List[ReasoningStep] = Field(description="Steps taken during processing, showing the AI's reasoning process.") - __properties: ClassVar[List[str]] = ["answer", "steps"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Reasoning from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in steps (list) - _items = [] - if self.steps: - for _item_steps in self.steps: - if _item_steps: - _items.append(_item_steps.to_dict()) - _dict['steps'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Reasoning from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "answer": obj.get("answer"), - "steps": [ReasoningStep.from_dict(_item) for _item in obj["steps"]] if obj.get("steps") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/reasoning_step.py b/gooddata-api-client/gooddata_api_client/models/reasoning_step.py deleted file mode 100644 index 2e7a9fbd0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/reasoning_step.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.thought import Thought -from typing import Optional, Set -from typing_extensions import Self - -class ReasoningStep(BaseModel): - """ - Steps taken during processing, showing the AI's reasoning process. - """ # noqa: E501 - thoughts: List[Thought] = Field(description="Detailed thoughts/messages within this step.") - title: StrictStr = Field(description="Title describing this reasoning step.") - __properties: ClassVar[List[str]] = ["thoughts", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ReasoningStep from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in thoughts (list) - _items = [] - if self.thoughts: - for _item_thoughts in self.thoughts: - if _item_thoughts: - _items.append(_item_thoughts.to_dict()) - _dict['thoughts'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ReasoningStep from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "thoughts": [Thought.from_dict(_item) for _item in obj["thoughts"]] if obj.get("thoughts") is not None else None, - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/reference_identifier.py b/gooddata-api-client/gooddata_api_client/models/reference_identifier.py deleted file mode 100644 index 0e9d68581..000000000 --- a/gooddata-api-client/gooddata_api_client/models/reference_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class ReferenceIdentifier(BaseModel): - """ - A reference identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Reference ID.") - type: StrictStr = Field(description="A type of the reference.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['dataset']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('dataset')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ReferenceIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ReferenceIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/reference_source_column.py b/gooddata-api-client/gooddata_api_client/models/reference_source_column.py deleted file mode 100644 index 87c46c11f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/reference_source_column.py +++ /dev/null @@ -1,111 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.dataset_grain import DatasetGrain -from typing import Optional, Set -from typing_extensions import Self - -class ReferenceSourceColumn(BaseModel): - """ - ReferenceSourceColumn - """ # noqa: E501 - column: StrictStr - data_type: Optional[StrictStr] = Field(default=None, alias="dataType") - is_nullable: Optional[StrictBool] = Field(default=None, alias="isNullable") - null_value: Optional[StrictStr] = Field(default=None, alias="nullValue") - target: DatasetGrain - __properties: ClassVar[List[str]] = ["column", "dataType", "isNullable", "nullValue", "target"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ReferenceSourceColumn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of target - if self.target: - _dict['target'] = self.target.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ReferenceSourceColumn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "column": obj.get("column"), - "dataType": obj.get("dataType"), - "isNullable": obj.get("isNullable"), - "nullValue": obj.get("nullValue"), - "target": DatasetGrain.from_dict(obj["target"]) if obj.get("target") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/relative.py b/gooddata-api-client/gooddata_api_client/models/relative.py deleted file mode 100644 index 43629a7f6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/relative.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.arithmetic_measure import ArithmeticMeasure -from gooddata_api_client.models.value import Value -from typing import Optional, Set -from typing_extensions import Self - -class Relative(BaseModel): - """ - Relative - """ # noqa: E501 - measure: ArithmeticMeasure - operator: StrictStr = Field(description="Relative condition operator. INCREASES_BY - the metric increases by the specified value. DECREASES_BY - the metric decreases by the specified value. CHANGES_BY - the metric increases or decreases by the specified value. ") - threshold: Value - __properties: ClassVar[List[str]] = ["measure", "operator", "threshold"] - - @field_validator('operator') - def operator_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INCREASES_BY', 'DECREASES_BY', 'CHANGES_BY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCREASES_BY', 'DECREASES_BY', 'CHANGES_BY')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Relative from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - # override the default output from pydantic by calling `to_dict()` of threshold - if self.threshold: - _dict['threshold'] = self.threshold.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Relative from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "measure": ArithmeticMeasure.from_dict(obj["measure"]) if obj.get("measure") is not None else None, - "operator": obj.get("operator"), - "threshold": Value.from_dict(obj["threshold"]) if obj.get("threshold") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/relative_bounded_date_filter.py b/gooddata-api-client/gooddata_api_client/models/relative_bounded_date_filter.py deleted file mode 100644 index 14dac296c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/relative_bounded_date_filter.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class RelativeBoundedDateFilter(BaseModel): - """ - RelativeBoundedDateFilter - """ # noqa: E501 - var_from: Optional[StrictInt] = Field(default=None, alias="from") - granularity: StrictStr - to: Optional[StrictInt] = None - __properties: ClassVar[List[str]] = ["from", "granularity", "to"] - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['ALL_TIME_GRANULARITY', 'GDC.time.year', 'GDC.time.week_us', 'GDC.time.week_in_year', 'GDC.time.week_in_quarter', 'GDC.time.week', 'GDC.time.euweek_in_year', 'GDC.time.euweek_in_quarter', 'GDC.time.quarter', 'GDC.time.quarter_in_year', 'GDC.time.month', 'GDC.time.month_in_quarter', 'GDC.time.month_in_year', 'GDC.time.day_in_year', 'GDC.time.day_in_quarter', 'GDC.time.day_in_month', 'GDC.time.day_in_week', 'GDC.time.day_in_euweek', 'GDC.time.date', 'GDC.time.hour', 'GDC.time.hour_in_day', 'GDC.time.minute', 'GDC.time.minute_in_hour', 'GDC.time.fiscal_month', 'GDC.time.fiscal_quarter', 'GDC.time.fiscal_year']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ALL_TIME_GRANULARITY', 'GDC.time.year', 'GDC.time.week_us', 'GDC.time.week_in_year', 'GDC.time.week_in_quarter', 'GDC.time.week', 'GDC.time.euweek_in_year', 'GDC.time.euweek_in_quarter', 'GDC.time.quarter', 'GDC.time.quarter_in_year', 'GDC.time.month', 'GDC.time.month_in_quarter', 'GDC.time.month_in_year', 'GDC.time.day_in_year', 'GDC.time.day_in_quarter', 'GDC.time.day_in_month', 'GDC.time.day_in_week', 'GDC.time.day_in_euweek', 'GDC.time.date', 'GDC.time.hour', 'GDC.time.hour_in_day', 'GDC.time.minute', 'GDC.time.minute_in_hour', 'GDC.time.fiscal_month', 'GDC.time.fiscal_quarter', 'GDC.time.fiscal_year')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RelativeBoundedDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RelativeBoundedDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "from": obj.get("from"), - "granularity": obj.get("granularity"), - "to": obj.get("to") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/relative_date_filter.py b/gooddata-api-client/gooddata_api_client/models/relative_date_filter.py deleted file mode 100644 index 3392fd601..000000000 --- a/gooddata-api-client/gooddata_api_client/models/relative_date_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.relative_date_filter_relative_date_filter import RelativeDateFilterRelativeDateFilter -from typing import Optional, Set -from typing_extensions import Self - -class RelativeDateFilter(BaseModel): - """ - A date filter specifying a time interval that is relative to the current date. For example, last week, next month, and so on. Field dataset is representing qualifier of date dimension. The 'from' and 'to' properties mark the boundaries of the interval. If 'from' is omitted, all values earlier than 'to' are included. If 'to' is omitted, all values later than 'from' are included. It is not allowed to omit both. - """ # noqa: E501 - relative_date_filter: RelativeDateFilterRelativeDateFilter = Field(alias="relativeDateFilter") - __properties: ClassVar[List[str]] = ["relativeDateFilter"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RelativeDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of relative_date_filter - if self.relative_date_filter: - _dict['relativeDateFilter'] = self.relative_date_filter.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RelativeDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "relativeDateFilter": RelativeDateFilterRelativeDateFilter.from_dict(obj["relativeDateFilter"]) if obj.get("relativeDateFilter") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/relative_date_filter_relative_date_filter.py b/gooddata-api-client/gooddata_api_client/models/relative_date_filter_relative_date_filter.py deleted file mode 100644 index d3ae7c78d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/relative_date_filter_relative_date_filter.py +++ /dev/null @@ -1,129 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_object_identifier_dataset import AfmObjectIdentifierDataset -from gooddata_api_client.models.bounded_filter import BoundedFilter -from typing import Optional, Set -from typing_extensions import Self - -class RelativeDateFilterRelativeDateFilter(BaseModel): - """ - RelativeDateFilterRelativeDateFilter - """ # noqa: E501 - apply_on_result: Optional[StrictBool] = Field(default=None, alias="applyOnResult") - bounded_filter: Optional[BoundedFilter] = Field(default=None, alias="boundedFilter") - dataset: AfmObjectIdentifierDataset - empty_value_handling: Optional[StrictStr] = Field(default='EXCLUDE', description="Specifies how rows with empty (null/missing) date values should be handled. INCLUDE includes empty dates in addition to the date range restriction, EXCLUDE removes rows with empty dates (default), ONLY keeps only rows with empty dates.", alias="emptyValueHandling") - var_from: StrictInt = Field(description="Start of the filtering interval. Specified by number of periods (with respect to given granularity). Typically negative (historical time interval like -2 for '2 days/weeks, ... ago').", alias="from") - granularity: StrictStr = Field(description="Date granularity specifying particular date attribute in given dimension.") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - to: StrictInt = Field(description="End of the filtering interval. Specified by number of periods (with respect to given granularity). Value 'O' is representing current time-interval (current day, week, ...).") - __properties: ClassVar[List[str]] = ["applyOnResult", "boundedFilter", "dataset", "emptyValueHandling", "from", "granularity", "localIdentifier", "to"] - - @field_validator('empty_value_handling') - def empty_value_handling_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['INCLUDE', 'EXCLUDE', 'ONLY']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INCLUDE', 'EXCLUDE', 'ONLY')") - return value - - @field_validator('granularity') - def granularity_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR', 'MINUTE_OF_HOUR', 'HOUR_OF_DAY', 'DAY_OF_WEEK', 'DAY_OF_MONTH', 'DAY_OF_QUARTER', 'DAY_OF_YEAR', 'WEEK_OF_YEAR', 'MONTH_OF_YEAR', 'QUARTER_OF_YEAR', 'FISCAL_MONTH', 'FISCAL_QUARTER', 'FISCAL_YEAR')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RelativeDateFilterRelativeDateFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of bounded_filter - if self.bounded_filter: - _dict['boundedFilter'] = self.bounded_filter.to_dict() - # override the default output from pydantic by calling `to_dict()` of dataset - if self.dataset: - _dict['dataset'] = self.dataset.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RelativeDateFilterRelativeDateFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "applyOnResult": obj.get("applyOnResult"), - "boundedFilter": BoundedFilter.from_dict(obj["boundedFilter"]) if obj.get("boundedFilter") is not None else None, - "dataset": AfmObjectIdentifierDataset.from_dict(obj["dataset"]) if obj.get("dataset") is not None else None, - "emptyValueHandling": obj.get("emptyValueHandling") if obj.get("emptyValueHandling") is not None else 'EXCLUDE', - "from": obj.get("from"), - "granularity": obj.get("granularity"), - "localIdentifier": obj.get("localIdentifier"), - "to": obj.get("to") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/relative_wrapper.py b/gooddata-api-client/gooddata_api_client/models/relative_wrapper.py deleted file mode 100644 index 46f3ca1c3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/relative_wrapper.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.relative import Relative -from typing import Optional, Set -from typing_extensions import Self - -class RelativeWrapper(BaseModel): - """ - RelativeWrapper - """ # noqa: E501 - relative: Relative - __properties: ClassVar[List[str]] = ["relative"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RelativeWrapper from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of relative - if self.relative: - _dict['relative'] = self.relative.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RelativeWrapper from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "relative": Relative.from_dict(obj["relative"]) if obj.get("relative") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/resolve_settings_request.py b/gooddata-api-client/gooddata_api_client/models/resolve_settings_request.py deleted file mode 100644 index 3201a157e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/resolve_settings_request.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ResolveSettingsRequest(BaseModel): - """ - A request containing setting IDs to resolve. - """ # noqa: E501 - settings: List[StrictStr] = Field(description="An array of setting IDs to resolve.") - __properties: ClassVar[List[str]] = ["settings"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResolveSettingsRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResolveSettingsRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "settings": obj.get("settings") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoint.py b/gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoint.py deleted file mode 100644 index 4009ae2b7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoint.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ResolvedLlmEndpoint(BaseModel): - """ - ResolvedLlmEndpoint - """ # noqa: E501 - id: StrictStr = Field(description="Endpoint Id") - title: StrictStr = Field(description="Endpoint Title") - __properties: ClassVar[List[str]] = ["id", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResolvedLlmEndpoint from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResolvedLlmEndpoint from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoints.py b/gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoints.py deleted file mode 100644 index 69495ac54..000000000 --- a/gooddata-api-client/gooddata_api_client/models/resolved_llm_endpoints.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.resolved_llm_endpoint import ResolvedLlmEndpoint -from typing import Optional, Set -from typing_extensions import Self - -class ResolvedLlmEndpoints(BaseModel): - """ - ResolvedLlmEndpoints - """ # noqa: E501 - data: List[ResolvedLlmEndpoint] - __properties: ClassVar[List[str]] = ["data"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResolvedLlmEndpoints from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data (list) - _items = [] - if self.data: - for _item_data in self.data: - if _item_data: - _items.append(_item_data.to_dict()) - _dict['data'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResolvedLlmEndpoints from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": [ResolvedLlmEndpoint.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/resolved_setting.py b/gooddata-api-client/gooddata_api_client/models/resolved_setting.py deleted file mode 100644 index 128d4e9c5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/resolved_setting.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ResolvedSetting(BaseModel): - """ - Setting and its value. - """ # noqa: E501 - content: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - id: StrictStr = Field(description="Setting ID. Formerly used to identify a type of a particular setting, going to be removed in a favor of setting's type.") - type: Optional[StrictStr] = Field(default=None, description="Type of the setting.") - __properties: ClassVar[List[str]] = ["content", "id", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['TIMEZONE', 'ACTIVE_THEME', 'ACTIVE_COLOR_PALETTE', 'ACTIVE_LLM_ENDPOINT', 'ACTIVE_LLM_PROVIDER', 'ACTIVE_CALENDARS', 'WHITE_LABELING', 'LOCALE', 'METADATA_LOCALE', 'FORMAT_LOCALE', 'MAPBOX_TOKEN', 'AG_GRID_TOKEN', 'WEEK_START', 'FISCAL_YEAR', 'SHOW_HIDDEN_CATALOG_ITEMS', 'OPERATOR_OVERRIDES', 'TIMEZONE_VALIDATION_ENABLED', 'OPENAI_CONFIG', 'ENABLE_FILE_ANALYTICS', 'ALERT', 'SEPARATORS', 'DATE_FILTER_CONFIG', 'JIT_PROVISIONING', 'JWT_JIT_PROVISIONING', 'DASHBOARD_FILTERS_APPLY_MODE', 'ENABLE_SLIDES_EXPORT', 'ENABLE_SNAPSHOT_EXPORT', 'AI_RATE_LIMIT', 'ATTACHMENT_SIZE_LIMIT', 'ATTACHMENT_LINK_TTL', 'AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE', 'ENABLE_DRILL_TO_URL_BY_DEFAULT', 'ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS', 'ENABLE_AUTOMATION_EVALUATION_MODE', 'ENABLE_ACCESSIBILITY_MODE', 'REGISTERED_PLUGGABLE_APPLICATIONS', 'DATA_LOCALE', 'LDM_DEFAULT_LOCALE', 'EXPORT_RESULT_POLLING_TIMEOUT_SECONDS', 'MAX_ZOOM_LEVEL', 'SORT_CASE_SENSITIVE', 'METRIC_FORMAT_OVERRIDE', 'ENABLE_AI_ON_DATA', 'API_ENTITIES_DEFAULT_CONTENT_MEDIA_TYPE', 'ENABLE_NULL_JOINS', 'EXPORT_CSV_CUSTOM_DELIMITER', 'ENABLE_QUERY_TAGS', 'RESTRICT_BASE_UI', 'CERTIFY_PARENT_OBJECTS']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('TIMEZONE', 'ACTIVE_THEME', 'ACTIVE_COLOR_PALETTE', 'ACTIVE_LLM_ENDPOINT', 'ACTIVE_LLM_PROVIDER', 'ACTIVE_CALENDARS', 'WHITE_LABELING', 'LOCALE', 'METADATA_LOCALE', 'FORMAT_LOCALE', 'MAPBOX_TOKEN', 'AG_GRID_TOKEN', 'WEEK_START', 'FISCAL_YEAR', 'SHOW_HIDDEN_CATALOG_ITEMS', 'OPERATOR_OVERRIDES', 'TIMEZONE_VALIDATION_ENABLED', 'OPENAI_CONFIG', 'ENABLE_FILE_ANALYTICS', 'ALERT', 'SEPARATORS', 'DATE_FILTER_CONFIG', 'JIT_PROVISIONING', 'JWT_JIT_PROVISIONING', 'DASHBOARD_FILTERS_APPLY_MODE', 'ENABLE_SLIDES_EXPORT', 'ENABLE_SNAPSHOT_EXPORT', 'AI_RATE_LIMIT', 'ATTACHMENT_SIZE_LIMIT', 'ATTACHMENT_LINK_TTL', 'AD_CATALOG_GROUPS_DEFAULT_EXPAND_STATE', 'ENABLE_DRILL_TO_URL_BY_DEFAULT', 'ALLOW_UNSAFE_FLEX_CONNECT_ENDPOINTS', 'ENABLE_AUTOMATION_EVALUATION_MODE', 'ENABLE_ACCESSIBILITY_MODE', 'REGISTERED_PLUGGABLE_APPLICATIONS', 'DATA_LOCALE', 'LDM_DEFAULT_LOCALE', 'EXPORT_RESULT_POLLING_TIMEOUT_SECONDS', 'MAX_ZOOM_LEVEL', 'SORT_CASE_SENSITIVE', 'METRIC_FORMAT_OVERRIDE', 'ENABLE_AI_ON_DATA', 'API_ENTITIES_DEFAULT_CONTENT_MEDIA_TYPE', 'ENABLE_NULL_JOINS', 'EXPORT_CSV_CUSTOM_DELIMITER', 'ENABLE_QUERY_TAGS', 'RESTRICT_BASE_UI', 'CERTIFY_PARENT_OBJECTS')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResolvedSetting from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if content (nullable) is None - # and model_fields_set contains the field - if self.content is None and "content" in self.model_fields_set: - _dict['content'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResolvedSetting from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/rest_api_identifier.py b/gooddata-api-client/gooddata_api_client/models/rest_api_identifier.py deleted file mode 100644 index 682fcae71..000000000 --- a/gooddata-api-client/gooddata_api_client/models/rest_api_identifier.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class RestApiIdentifier(BaseModel): - """ - Object identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] - type: StrictStr - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RestApiIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RestApiIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/result_cache_metadata.py b/gooddata-api-client/gooddata_api_client/models/result_cache_metadata.py deleted file mode 100644 index b438f088d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/result_cache_metadata.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.afm import AFM -from gooddata_api_client.models.execution_response import ExecutionResponse -from gooddata_api_client.models.result_spec import ResultSpec -from typing import Optional, Set -from typing_extensions import Self - -class ResultCacheMetadata(BaseModel): - """ - All execution result's metadata used for calculation including ExecutionResponse - """ # noqa: E501 - afm: AFM - execution_response: ExecutionResponse = Field(alias="executionResponse") - result_size: StrictInt = Field(alias="resultSize") - result_spec: ResultSpec = Field(alias="resultSpec") - __properties: ClassVar[List[str]] = ["afm", "executionResponse", "resultSize", "resultSpec"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResultCacheMetadata from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of afm - if self.afm: - _dict['afm'] = self.afm.to_dict() - # override the default output from pydantic by calling `to_dict()` of execution_response - if self.execution_response: - _dict['executionResponse'] = self.execution_response.to_dict() - # override the default output from pydantic by calling `to_dict()` of result_spec - if self.result_spec: - _dict['resultSpec'] = self.result_spec.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResultCacheMetadata from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "afm": AFM.from_dict(obj["afm"]) if obj.get("afm") is not None else None, - "executionResponse": ExecutionResponse.from_dict(obj["executionResponse"]) if obj.get("executionResponse") is not None else None, - "resultSize": obj.get("resultSize"), - "resultSpec": ResultSpec.from_dict(obj["resultSpec"]) if obj.get("resultSpec") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/result_dimension.py b/gooddata-api-client/gooddata_api_client/models/result_dimension.py deleted file mode 100644 index 91b01ed74..000000000 --- a/gooddata-api-client/gooddata_api_client/models/result_dimension.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.result_dimension_header import ResultDimensionHeader -from typing import Optional, Set -from typing_extensions import Self - -class ResultDimension(BaseModel): - """ - Single result dimension - """ # noqa: E501 - headers: List[ResultDimensionHeader] - local_identifier: StrictStr = Field(description="Local identifier of the dimension.", alias="localIdentifier") - __properties: ClassVar[List[str]] = ["headers", "localIdentifier"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResultDimension from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in headers (list) - _items = [] - if self.headers: - for _item_headers in self.headers: - if _item_headers: - _items.append(_item_headers.to_dict()) - _dict['headers'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResultDimension from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "headers": [ResultDimensionHeader.from_dict(_item) for _item in obj["headers"]] if obj.get("headers") is not None else None, - "localIdentifier": obj.get("localIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/result_dimension_header.py b/gooddata-api-client/gooddata_api_client/models/result_dimension_header.py deleted file mode 100644 index 42a5d7460..000000000 --- a/gooddata-api-client/gooddata_api_client/models/result_dimension_header.py +++ /dev/null @@ -1,173 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.attribute_header import AttributeHeader -from gooddata_api_client.models.measure_group_headers import MeasureGroupHeaders -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -RESULTDIMENSIONHEADER_ONE_OF_SCHEMAS = ["AttributeHeader", "MeasureGroupHeaders"] - -class ResultDimensionHeader(BaseModel): - """ - One of the headers in a result dimension. - """ - # data type: MeasureGroupHeaders - oneof_schema_1_validator: Optional[MeasureGroupHeaders] = None - # data type: AttributeHeader - oneof_schema_2_validator: Optional[AttributeHeader] = None - actual_instance: Optional[Union[AttributeHeader, MeasureGroupHeaders]] = None - one_of_schemas: Set[str] = { "AttributeHeader", "MeasureGroupHeaders" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = ResultDimensionHeader.model_construct() - error_messages = [] - match = 0 - # validate data type: MeasureGroupHeaders - if not isinstance(v, MeasureGroupHeaders): - error_messages.append(f"Error! Input type `{type(v)}` is not `MeasureGroupHeaders`") - else: - match += 1 - # validate data type: AttributeHeader - if not isinstance(v, AttributeHeader): - error_messages.append(f"Error! Input type `{type(v)}` is not `AttributeHeader`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in ResultDimensionHeader with oneOf schemas: AttributeHeader, MeasureGroupHeaders. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def _try_deserialize(cls, json_str: str, data: dict) -> Self: - """Disambiguate oneOf by checking for distinguishing keys. - - AttributeHeader requires 'attributeHeader', MeasureGroupHeaders requires - 'measureGroupHeaders'. Because MeasureGroupHeaders.measureGroupHeaders is - Optional, the default pydantic-based try/except approach matches both - schemas whenever the JSON contains 'attributeHeader'. Field-based - checking avoids that false positive. - """ - instance = cls.model_construct() - - if "attributeHeader" in data: - instance.actual_instance = AttributeHeader.from_json(json_str) - return instance - - if "measureGroupHeaders" in data: - instance.actual_instance = MeasureGroupHeaders.from_json(json_str) - return instance - - raise ValueError( - "No match found when deserializing the JSON string into " - "ResultDimensionHeader with oneOf schemas: AttributeHeader, " - "MeasureGroupHeaders. The JSON object does not contain a " - "distinguishing key ('attributeHeader' or 'measureGroupHeaders')." - ) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - data = json.loads(json_str) - if isinstance(data, dict): - return cls._try_deserialize(json_str, data) - - # Fallback: brute-force try each schema (original behaviour) - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into MeasureGroupHeaders - try: - if match == 0: - instance.actual_instance = MeasureGroupHeaders.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AttributeHeader - try: - if match == 0: - instance.actual_instance = AttributeHeader.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into ResultDimensionHeader with oneOf schemas: AttributeHeader, MeasureGroupHeaders. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AttributeHeader, MeasureGroupHeaders]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/result_spec.py b/gooddata-api-client/gooddata_api_client/models/result_spec.py deleted file mode 100644 index 9da41c20c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/result_spec.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.dimension import Dimension -from gooddata_api_client.models.total import Total -from typing import Optional, Set -from typing_extensions import Self - -class ResultSpec(BaseModel): - """ - Specifies how the result data will be formatted (```dimensions```) and which additional data shall be computed (```totals```). - """ # noqa: E501 - dimensions: List[Dimension] - totals: Optional[List[Total]] = None - __properties: ClassVar[List[str]] = ["dimensions", "totals"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ResultSpec from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in dimensions (list) - _items = [] - if self.dimensions: - for _item_dimensions in self.dimensions: - if _item_dimensions: - _items.append(_item_dimensions.to_dict()) - _dict['dimensions'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in totals (list) - _items = [] - if self.totals: - for _item_totals in self.totals: - if _item_totals: - _items.append(_item_totals.to_dict()) - _dict['totals'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ResultSpec from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dimensions": [Dimension.from_dict(_item) for _item in obj["dimensions"]] if obj.get("dimensions") is not None else None, - "totals": [Total.from_dict(_item) for _item in obj["totals"]] if obj.get("totals") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/route_result.py b/gooddata-api-client/gooddata_api_client/models/route_result.py deleted file mode 100644 index c23c2d22c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/route_result.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class RouteResult(BaseModel): - """ - Question -> Use Case routing. May contain final answer is a special use case is not required. - """ # noqa: E501 - reasoning: StrictStr = Field(description="Explanation why LLM picked this use case.") - use_case: StrictStr = Field(description="Use case where LLM routed based on question.", alias="useCase") - __properties: ClassVar[List[str]] = ["reasoning", "useCase"] - - @field_validator('use_case') - def use_case_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INVALID', 'GENERAL', 'SEARCH', 'CREATE_VISUALIZATION', 'EXTEND_VISUALIZATION', 'HOWTO', 'CHANGE_ANALYSIS', 'ALERT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INVALID', 'GENERAL', 'SEARCH', 'CREATE_VISUALIZATION', 'EXTEND_VISUALIZATION', 'HOWTO', 'CHANGE_ANALYSIS', 'ALERT')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RouteResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RouteResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "reasoning": obj.get("reasoning"), - "useCase": obj.get("useCase") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/rsa_specification.py b/gooddata-api-client/gooddata_api_client/models/rsa_specification.py deleted file mode 100644 index e70ee9dad..000000000 --- a/gooddata-api-client/gooddata_api_client/models/rsa_specification.py +++ /dev/null @@ -1,134 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class RsaSpecification(BaseModel): - """ - RsaSpecification - """ # noqa: E501 - alg: StrictStr - e: StrictStr - kid: Annotated[str, Field(strict=True, max_length=255)] - kty: StrictStr - n: StrictStr - use: StrictStr - x5c: Optional[List[StrictStr]] = None - x5t: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["alg", "e", "kid", "kty", "n", "use", "x5c", "x5t"] - - @field_validator('alg') - def alg_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RS256', 'RS384', 'RS512']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RS256', 'RS384', 'RS512')") - return value - - @field_validator('kid') - def kid_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[^.]", value): - raise ValueError(r"must validate the regular expression /^[^.]/") - return value - - @field_validator('kty') - def kty_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RSA']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RSA')") - return value - - @field_validator('use') - def use_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['sig']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('sig')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RsaSpecification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RsaSpecification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alg": obj.get("alg"), - "e": obj.get("e"), - "kid": obj.get("kid"), - "kty": obj.get("kty"), - "n": obj.get("n"), - "use": obj.get("use"), - "x5c": obj.get("x5c"), - "x5t": obj.get("x5t") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/rule_permission.py b/gooddata-api-client/gooddata_api_client/models/rule_permission.py deleted file mode 100644 index 3aee474bf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/rule_permission.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.granted_permission import GrantedPermission -from typing import Optional, Set -from typing_extensions import Self - -class RulePermission(BaseModel): - """ - List of rules - """ # noqa: E501 - permissions: Optional[List[GrantedPermission]] = Field(default=None, description="Permissions granted by the rule") - type: StrictStr = Field(description="Type of the rule") - __properties: ClassVar[List[str]] = ["permissions", "type"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RulePermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RulePermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "permissions": [GrantedPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None, - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/run_service_command_request.py b/gooddata-api-client/gooddata_api_client/models/run_service_command_request.py deleted file mode 100644 index 76dd3bb07..000000000 --- a/gooddata-api-client/gooddata_api_client/models/run_service_command_request.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class RunServiceCommandRequest(BaseModel): - """ - Request to run an AI Lake Service Command - """ # noqa: E501 - context: Optional[Dict[str, Optional[StrictStr]]] = Field(default=None, description="The context to pass to the command") - payload: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - __properties: ClassVar[List[str]] = ["context", "payload"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RunServiceCommandRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if context (nullable) is None - # and model_fields_set contains the field - if self.context is None and "context" in self.model_fields_set: - _dict['context'] = None - - # set to None if payload (nullable) is None - # and model_fields_set contains the field - if self.payload is None and "payload" in self.model_fields_set: - _dict['payload'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RunServiceCommandRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "context": obj.get("context"), - "payload": obj.get("payload") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/running_section.py b/gooddata-api-client/gooddata_api_client/models/running_section.py deleted file mode 100644 index c67958147..000000000 --- a/gooddata-api-client/gooddata_api_client/models/running_section.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class RunningSection(BaseModel): - """ - Footer section of the slide - """ # noqa: E501 - left: Optional[StrictStr] = Field(default=None, description="Either {{logo}} variable or custom text with combination of other variables.") - right: Optional[StrictStr] = Field(default=None, description="Either {{logo}} variable or custom text with combination of other variables.") - __properties: ClassVar[List[str]] = ["left", "right"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of RunningSection from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if left (nullable) is None - # and model_fields_set contains the field - if self.left is None and "left" in self.model_fields_set: - _dict['left'] = None - - # set to None if right (nullable) is None - # and model_fields_set contains the field - if self.right is None and "right" in self.model_fields_set: - _dict['right'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of RunningSection from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "left": obj.get("left"), - "right": obj.get("right") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/saved_visualization.py b/gooddata-api-client/gooddata_api_client/models/saved_visualization.py deleted file mode 100644 index 4ef90c976..000000000 --- a/gooddata-api-client/gooddata_api_client/models/saved_visualization.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class SavedVisualization(BaseModel): - """ - Created and saved visualization IDs. - """ # noqa: E501 - created_visualization_id: StrictStr = Field(description="Created visualization ID.", alias="createdVisualizationId") - saved_visualization_id: StrictStr = Field(description="Saved visualization ID.", alias="savedVisualizationId") - __properties: ClassVar[List[str]] = ["createdVisualizationId", "savedVisualizationId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SavedVisualization from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SavedVisualization from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createdVisualizationId": obj.get("createdVisualizationId"), - "savedVisualizationId": obj.get("savedVisualizationId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/scan_request.py b/gooddata-api-client/gooddata_api_client/models/scan_request.py deleted file mode 100644 index 017913c28..000000000 --- a/gooddata-api-client/gooddata_api_client/models/scan_request.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ScanRequest(BaseModel): - """ - A request containing all information critical to model scanning. - """ # noqa: E501 - scan_tables: StrictBool = Field(description="A flag indicating whether the tables should be scanned.", alias="scanTables") - scan_views: StrictBool = Field(description="A flag indicating whether the views should be scanned.", alias="scanViews") - schemata: Optional[List[StrictStr]] = Field(default=None, description="What schemata will be scanned.") - separator: StrictStr = Field(description="A separator between prefixes and the names.") - table_prefix: Optional[StrictStr] = Field(default=None, description="Tables starting with this prefix will be scanned. The prefix is then followed by the value of `separator` parameter. Given the table prefix is `out_table` and separator is `__`, the table with name like `out_table__customers` will be scanned.", alias="tablePrefix") - view_prefix: Optional[StrictStr] = Field(default=None, description="Views starting with this prefix will be scanned. The prefix is then followed by the value of `separator` parameter. Given the view prefix is `out_view` and separator is `__`, the table with name like `out_view__us_customers` will be scanned.", alias="viewPrefix") - __properties: ClassVar[List[str]] = ["scanTables", "scanViews", "schemata", "separator", "tablePrefix", "viewPrefix"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ScanRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ScanRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "scanTables": obj.get("scanTables"), - "scanViews": obj.get("scanViews"), - "schemata": obj.get("schemata"), - "separator": obj.get("separator"), - "tablePrefix": obj.get("tablePrefix"), - "viewPrefix": obj.get("viewPrefix") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/scan_result_pdm.py b/gooddata-api-client/gooddata_api_client/models/scan_result_pdm.py deleted file mode 100644 index 10fbfb7b1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/scan_result_pdm.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.declarative_tables import DeclarativeTables -from gooddata_api_client.models.table_warning import TableWarning -from typing import Optional, Set -from typing_extensions import Self - -class ScanResultPdm(BaseModel): - """ - Result of scan of data source physical model. - """ # noqa: E501 - pdm: DeclarativeTables - warnings: List[TableWarning] - __properties: ClassVar[List[str]] = ["pdm", "warnings"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ScanResultPdm from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of pdm - if self.pdm: - _dict['pdm'] = self.pdm.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in warnings (list) - _items = [] - if self.warnings: - for _item_warnings in self.warnings: - if _item_warnings: - _items.append(_item_warnings.to_dict()) - _dict['warnings'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ScanResultPdm from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "pdm": DeclarativeTables.from_dict(obj["pdm"]) if obj.get("pdm") is not None else None, - "warnings": [TableWarning.from_dict(_item) for _item in obj["warnings"]] if obj.get("warnings") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/scan_sql_request.py b/gooddata-api-client/gooddata_api_client/models/scan_sql_request.py deleted file mode 100644 index b643c26ff..000000000 --- a/gooddata-api-client/gooddata_api_client/models/scan_sql_request.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ScanSqlRequest(BaseModel): - """ - A request with SQL query to by analyzed. - """ # noqa: E501 - sql: StrictStr = Field(description="SQL query to be analyzed.") - __properties: ClassVar[List[str]] = ["sql"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ScanSqlRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ScanSqlRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sql": obj.get("sql") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/scan_sql_response.py b/gooddata-api-client/gooddata_api_client/models/scan_sql_response.py deleted file mode 100644 index d155db3f1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/scan_sql_response.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.sql_column import SqlColumn -from typing import Optional, Set -from typing_extensions import Self - -class ScanSqlResponse(BaseModel): - """ - Result of scanSql. Consists of array of query columns including type. Sql query result data preview can be attached optionally - """ # noqa: E501 - columns: List[SqlColumn] = Field(description="Array of columns with types.") - data_preview: Optional[List[List[Optional[StrictStr]]]] = Field(default=None, description="Array of rows where each row is another array of string values.", alias="dataPreview") - __properties: ClassVar[List[str]] = ["columns", "dataPreview"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ScanSqlResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in columns (list) - _items = [] - if self.columns: - for _item_columns in self.columns: - if _item_columns: - _items.append(_item_columns.to_dict()) - _dict['columns'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ScanSqlResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columns": [SqlColumn.from_dict(_item) for _item in obj["columns"]] if obj.get("columns") is not None else None, - "dataPreview": obj.get("dataPreview") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/search_knowledge_response_dto.py b/gooddata-api-client/gooddata_api_client/models/search_knowledge_response_dto.py deleted file mode 100644 index 14acb6092..000000000 --- a/gooddata-api-client/gooddata_api_client/models/search_knowledge_response_dto.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.knowledge_search_result_dto import KnowledgeSearchResultDto -from gooddata_api_client.models.search_statistics_dto import SearchStatisticsDto -from typing import Optional, Set -from typing_extensions import Self - -class SearchKnowledgeResponseDto(BaseModel): - """ - SearchKnowledgeResponseDto - """ # noqa: E501 - results: List[KnowledgeSearchResultDto] - statistics: SearchStatisticsDto - __properties: ClassVar[List[str]] = ["results", "statistics"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SearchKnowledgeResponseDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in results (list) - _items = [] - if self.results: - for _item_results in self.results: - if _item_results: - _items.append(_item_results.to_dict()) - _dict['results'] = _items - # override the default output from pydantic by calling `to_dict()` of statistics - if self.statistics: - _dict['statistics'] = self.statistics.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SearchKnowledgeResponseDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "results": [KnowledgeSearchResultDto.from_dict(_item) for _item in obj["results"]] if obj.get("results") is not None else None, - "statistics": SearchStatisticsDto.from_dict(obj["statistics"]) if obj.get("statistics") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/search_relationship_object.py b/gooddata-api-client/gooddata_api_client/models/search_relationship_object.py deleted file mode 100644 index 04beee8f9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/search_relationship_object.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class SearchRelationshipObject(BaseModel): - """ - SearchRelationshipObject - """ # noqa: E501 - source_object_id: StrictStr = Field(description="Source object ID.", alias="sourceObjectId") - source_object_title: StrictStr = Field(description="Source object title.", alias="sourceObjectTitle") - source_object_type: StrictStr = Field(description="Source object type, e.g. dashboard.", alias="sourceObjectType") - source_workspace_id: StrictStr = Field(description="Source workspace ID. If relationship is dashboard->visualization, this is the workspace where the dashboard is located.", alias="sourceWorkspaceId") - target_object_id: StrictStr = Field(description="Target object ID.", alias="targetObjectId") - target_object_title: StrictStr = Field(description="Target object title.", alias="targetObjectTitle") - target_object_type: StrictStr = Field(description="Target object type, e.g. visualization.", alias="targetObjectType") - target_workspace_id: StrictStr = Field(description="Target workspace ID. If relationship is dashboard->visualization, this is the workspace where the visualization is located.", alias="targetWorkspaceId") - __properties: ClassVar[List[str]] = ["sourceObjectId", "sourceObjectTitle", "sourceObjectType", "sourceWorkspaceId", "targetObjectId", "targetObjectTitle", "targetObjectType", "targetWorkspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SearchRelationshipObject from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SearchRelationshipObject from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sourceObjectId": obj.get("sourceObjectId"), - "sourceObjectTitle": obj.get("sourceObjectTitle"), - "sourceObjectType": obj.get("sourceObjectType"), - "sourceWorkspaceId": obj.get("sourceWorkspaceId"), - "targetObjectId": obj.get("targetObjectId"), - "targetObjectTitle": obj.get("targetObjectTitle"), - "targetObjectType": obj.get("targetObjectType"), - "targetWorkspaceId": obj.get("targetWorkspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/search_request.py b/gooddata-api-client/gooddata_api_client/models/search_request.py deleted file mode 100644 index 4c4de3d1d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/search_request.py +++ /dev/null @@ -1,128 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing_extensions import Annotated -from gooddata_api_client.models.allowed_relationship_type import AllowedRelationshipType -from typing import Optional, Set -from typing_extensions import Self - -class SearchRequest(BaseModel): - """ - SearchRequest - """ # noqa: E501 - allowed_relationship_types: Optional[List[AllowedRelationshipType]] = Field(default=None, description="Filter relationships and results based on allowed relationship type combinations. When specified, only relationships matching the allowed types are returned, and results are filtered to include only direct matches or objects reachable via allowed relationships. When null or omitted, all relationships and results are returned (default behavior). Note: This filtering happens after the initial search, so the number of returned results may be lower than the requested limit if some results are filtered out.", alias="allowedRelationshipTypes") - deep_search: Optional[StrictBool] = Field(default=False, description="Turn on deep search. If true, content of complex objects will be searched as well, e.g. metrics in visualizations.", alias="deepSearch") - enable_hybrid_search: Optional[StrictBool] = Field(default=False, description="If true, enables hybrid search combining vector similarity and keyword matching. This can improve search results by considering both semantic similarity and exact keyword matches.", alias="enableHybridSearch") - exclude_tags: Optional[List[StrictStr]] = Field(default=None, description="Exclude objects that contain any of the specified tags. This parameter only affects the search results. Objects with excluded tags are completely hidden from the results.", alias="excludeTags") - include_hidden: Optional[StrictBool] = Field(default=False, description="If true, includes hidden objects in search results. If false (default), excludes objects where isHidden=true.", alias="includeHidden") - include_tags: Optional[List[StrictStr]] = Field(default=None, description="Include only objects that contain at least one of the specified tags (OR logic). This parameter only affects the search results. If an object has multiple tags, it will be included as long as it matches at least one tag from this parameter.", alias="includeTags") - limit: Optional[StrictInt] = Field(default=10, description="Maximum number of results to return. There is a hard limit and the actual number of returned results may be lower than what is requested. This can happen when post-search filters are applied (e.g., reranker threshold filtering or allowedRelationshipTypes filtering), which may exclude some results after the initial search.") - object_types: Optional[List[StrictStr]] = Field(default=None, description="List of object types to search for.", alias="objectTypes") - question: Annotated[str, Field(strict=True, max_length=1000)] = Field(description="Keyword/sentence is input for search.") - relevant_score_threshold: Optional[Union[StrictFloat, StrictInt]] = Field(default=0.3, description="Score, above which we return found objects. Below this score objects are not relevant.", alias="relevantScoreThreshold") - title_to_descriptor_ratio: Optional[Union[StrictFloat, StrictInt]] = Field(default=0.7, description="Temporary for experiments. Ratio of title score to descriptor score.", alias="titleToDescriptorRatio") - __properties: ClassVar[List[str]] = ["allowedRelationshipTypes", "deepSearch", "enableHybridSearch", "excludeTags", "includeHidden", "includeTags", "limit", "objectTypes", "question", "relevantScoreThreshold", "titleToDescriptorRatio"] - - @field_validator('object_types') - def object_types_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard']): - raise ValueError("each list item must be one of ('attribute', 'metric', 'fact', 'label', 'date', 'dataset', 'visualization', 'dashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SearchRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in allowed_relationship_types (list) - _items = [] - if self.allowed_relationship_types: - for _item_allowed_relationship_types in self.allowed_relationship_types: - if _item_allowed_relationship_types: - _items.append(_item_allowed_relationship_types.to_dict()) - _dict['allowedRelationshipTypes'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SearchRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "allowedRelationshipTypes": [AllowedRelationshipType.from_dict(_item) for _item in obj["allowedRelationshipTypes"]] if obj.get("allowedRelationshipTypes") is not None else None, - "deepSearch": obj.get("deepSearch") if obj.get("deepSearch") is not None else False, - "enableHybridSearch": obj.get("enableHybridSearch") if obj.get("enableHybridSearch") is not None else False, - "excludeTags": obj.get("excludeTags"), - "includeHidden": obj.get("includeHidden") if obj.get("includeHidden") is not None else False, - "includeTags": obj.get("includeTags"), - "limit": obj.get("limit") if obj.get("limit") is not None else 10, - "objectTypes": obj.get("objectTypes"), - "question": obj.get("question"), - "relevantScoreThreshold": obj.get("relevantScoreThreshold") if obj.get("relevantScoreThreshold") is not None else 0.3, - "titleToDescriptorRatio": obj.get("titleToDescriptorRatio") if obj.get("titleToDescriptorRatio") is not None else 0.7 - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/search_result.py b/gooddata-api-client/gooddata_api_client/models/search_result.py deleted file mode 100644 index 90a1c49ea..000000000 --- a/gooddata-api-client/gooddata_api_client/models/search_result.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.search_relationship_object import SearchRelationshipObject -from gooddata_api_client.models.search_result_object import SearchResultObject -from typing import Optional, Set -from typing_extensions import Self - -class SearchResult(BaseModel): - """ - SearchResult - """ # noqa: E501 - reasoning: StrictStr = Field(description="DEPRECATED: Use top-level reasoning.steps instead. If something is not working properly this field will contain explanation.") - relationships: List[SearchRelationshipObject] - results: List[SearchResultObject] - __properties: ClassVar[List[str]] = ["reasoning", "relationships", "results"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SearchResult from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in relationships (list) - _items = [] - if self.relationships: - for _item_relationships in self.relationships: - if _item_relationships: - _items.append(_item_relationships.to_dict()) - _dict['relationships'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in results (list) - _items = [] - if self.results: - for _item_results in self.results: - if _item_results: - _items.append(_item_results.to_dict()) - _dict['results'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SearchResult from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "reasoning": obj.get("reasoning"), - "relationships": [SearchRelationshipObject.from_dict(_item) for _item in obj["relationships"]] if obj.get("relationships") is not None else None, - "results": [SearchResultObject.from_dict(_item) for _item in obj["results"]] if obj.get("results") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/search_result_object.py b/gooddata-api-client/gooddata_api_client/models/search_result_object.py deleted file mode 100644 index 13ed95e58..000000000 --- a/gooddata-api-client/gooddata_api_client/models/search_result_object.py +++ /dev/null @@ -1,115 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional, Union -from typing import Optional, Set -from typing_extensions import Self - -class SearchResultObject(BaseModel): - """ - SearchResultObject - """ # noqa: E501 - created_at: Optional[datetime] = Field(default=None, description="Timestamp when object was created.", alias="createdAt") - description: Optional[StrictStr] = Field(default=None, description="Object description.") - id: StrictStr = Field(description="Object ID.") - is_hidden: Optional[StrictBool] = Field(default=None, description="If true, this object is hidden from AI search results by default.", alias="isHidden") - modified_at: Optional[datetime] = Field(default=None, description="Timestamp when object was last modified.", alias="modifiedAt") - score: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Result score calculated by a similarity search algorithm (cosine_distance).") - score_descriptor: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Result score for descriptor containing(now) description and tags.", alias="scoreDescriptor") - score_exact_match: Optional[StrictInt] = Field(default=None, description="Result score for exact match(id/title). 1/1000. Other scores are multiplied by this.", alias="scoreExactMatch") - score_title: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Result score for object title.", alias="scoreTitle") - tags: Optional[List[StrictStr]] = None - title: StrictStr = Field(description="Object title.") - type: StrictStr = Field(description="Object type, e.g. dashboard.") - visualization_url: Optional[StrictStr] = Field(default=None, description="If the object is visualization, this field defines the type of visualization.", alias="visualizationUrl") - workspace_id: StrictStr = Field(description="Workspace ID.", alias="workspaceId") - __properties: ClassVar[List[str]] = ["createdAt", "description", "id", "isHidden", "modifiedAt", "score", "scoreDescriptor", "scoreExactMatch", "scoreTitle", "tags", "title", "type", "visualizationUrl", "workspaceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SearchResultObject from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SearchResultObject from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createdAt": obj.get("createdAt"), - "description": obj.get("description"), - "id": obj.get("id"), - "isHidden": obj.get("isHidden"), - "modifiedAt": obj.get("modifiedAt"), - "score": obj.get("score"), - "scoreDescriptor": obj.get("scoreDescriptor"), - "scoreExactMatch": obj.get("scoreExactMatch"), - "scoreTitle": obj.get("scoreTitle"), - "tags": obj.get("tags"), - "title": obj.get("title"), - "type": obj.get("type"), - "visualizationUrl": obj.get("visualizationUrl"), - "workspaceId": obj.get("workspaceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/search_statistics_dto.py b/gooddata-api-client/gooddata_api_client/models/search_statistics_dto.py deleted file mode 100644 index 7657211b2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/search_statistics_dto.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class SearchStatisticsDto(BaseModel): - """ - SearchStatisticsDto - """ # noqa: E501 - average_similarity_score: Union[StrictFloat, StrictInt] = Field(alias="averageSimilarityScore") - total_results: StrictInt = Field(alias="totalResults") - __properties: ClassVar[List[str]] = ["averageSimilarityScore", "totalResults"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SearchStatisticsDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SearchStatisticsDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "averageSimilarityScore": obj.get("averageSimilarityScore"), - "totalResults": obj.get("totalResults") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/section_slide_template.py b/gooddata-api-client/gooddata_api_client/models/section_slide_template.py deleted file mode 100644 index ea3996b98..000000000 --- a/gooddata-api-client/gooddata_api_client/models/section_slide_template.py +++ /dev/null @@ -1,109 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.running_section import RunningSection -from typing import Optional, Set -from typing_extensions import Self - -class SectionSlideTemplate(BaseModel): - """ - Settings for section slide. - """ # noqa: E501 - background_image: Optional[StrictBool] = Field(default=True, description="Show background image on the slide.", alias="backgroundImage") - footer: Optional[RunningSection] = None - header: Optional[RunningSection] = None - __properties: ClassVar[List[str]] = ["backgroundImage", "footer", "header"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SectionSlideTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of footer - if self.footer: - _dict['footer'] = self.footer.to_dict() - # override the default output from pydantic by calling `to_dict()` of header - if self.header: - _dict['header'] = self.header.to_dict() - # set to None if footer (nullable) is None - # and model_fields_set contains the field - if self.footer is None and "footer" in self.model_fields_set: - _dict['footer'] = None - - # set to None if header (nullable) is None - # and model_fields_set contains the field - if self.header is None and "header" in self.model_fields_set: - _dict['header'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SectionSlideTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "backgroundImage": obj.get("backgroundImage") if obj.get("backgroundImage") is not None else True, - "footer": RunningSection.from_dict(obj["footer"]) if obj.get("footer") is not None else None, - "header": RunningSection.from_dict(obj["header"]) if obj.get("header") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/service_info.py b/gooddata-api-client/gooddata_api_client/models/service_info.py deleted file mode 100644 index 10a09c9c3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/service_info.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ServiceInfo(BaseModel): - """ - Non-sensitive metadata for an AI Lake pipeline - """ # noqa: E501 - name: StrictStr = Field(description="Human-readable name of the service") - service_id: StrictStr = Field(description="Internal identifier for the service configuration (UUID)", alias="serviceId") - __properties: ClassVar[List[str]] = ["name", "serviceId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ServiceInfo from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ServiceInfo from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "name": obj.get("name"), - "serviceId": obj.get("serviceId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/set_certification_request.py b/gooddata-api-client/gooddata_api_client/models/set_certification_request.py deleted file mode 100644 index 16362550b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/set_certification_request.py +++ /dev/null @@ -1,123 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class SetCertificationRequest(BaseModel): - """ - Request to set or clear the certification of a workspace entity. - """ # noqa: E501 - id: StrictStr = Field(description="ID of the entity.") - message: Optional[StrictStr] = Field(default=None, description="Optional message associated with the certification.") - status: Optional[StrictStr] = Field(default=None, description="Certification status of the entity.") - type: StrictStr = Field(description="Type of the entity.") - __properties: ClassVar[List[str]] = ["id", "message", "status", "type"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['CERTIFIED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CERTIFIED')") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['metric', 'visualizationObject', 'analyticalDashboard']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('metric', 'visualizationObject', 'analyticalDashboard')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SetCertificationRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if message (nullable) is None - # and model_fields_set contains the field - if self.message is None and "message" in self.model_fields_set: - _dict['message'] = None - - # set to None if status (nullable) is None - # and model_fields_set contains the field - if self.status is None and "status" in self.model_fields_set: - _dict['status'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SetCertificationRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "message": obj.get("message"), - "status": obj.get("status"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/settings.py b/gooddata-api-client/gooddata_api_client/models/settings.py deleted file mode 100644 index b73ef4afb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/settings.py +++ /dev/null @@ -1,147 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.pdf_table_style import PdfTableStyle -from typing import Optional, Set -from typing_extensions import Self - -class Settings(BaseModel): - """ - Additional settings. - """ # noqa: E501 - delimiter: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=1)]] = Field(default=None, description="Set column delimiter. (CSV)") - export_info: Optional[StrictBool] = Field(default=False, description="If true, the export will contain the information about the export – exported date, filters, etc. Works only with `visualizationObject`. (XLSX, PDF)", alias="exportInfo") - merge_headers: Optional[StrictBool] = Field(default=None, description="Merge equal headers in neighbouring cells. (XLSX)", alias="mergeHeaders") - page_orientation: Optional[StrictStr] = Field(default='PORTRAIT', description="Set page orientation. (PDF)", alias="pageOrientation") - page_size: Optional[StrictStr] = Field(default='A4', description="Set page size. (PDF)", alias="pageSize") - pdf_page_size: Optional[StrictStr] = Field(default=None, description="Page size and orientation. (PDF)", alias="pdfPageSize") - pdf_table_style: Optional[List[PdfTableStyle]] = Field(default=None, description="Custom CSS styles for the table. (PDF, HTML)", alias="pdfTableStyle") - pdf_top_left_content: Optional[StrictStr] = Field(default=None, description="Top left header content. (PDF)", alias="pdfTopLeftContent") - pdf_top_right_content: Optional[StrictStr] = Field(default=None, description="Top right header content. (PDF)", alias="pdfTopRightContent") - show_filters: Optional[StrictBool] = Field(default=None, description="Print applied filters on top of the document. (PDF/HTML when visualizationObject is given)", alias="showFilters") - __properties: ClassVar[List[str]] = ["delimiter", "exportInfo", "mergeHeaders", "pageOrientation", "pageSize", "pdfPageSize", "pdfTableStyle", "pdfTopLeftContent", "pdfTopRightContent", "showFilters"] - - @field_validator('delimiter') - def delimiter_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"^[^\r\n\"]$", value): - raise ValueError(r"must validate the regular expression /^[^\r\n\"]$/") - return value - - @field_validator('page_orientation') - def page_orientation_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['PORTRAIT', 'LANDSCAPE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('PORTRAIT', 'LANDSCAPE')") - return value - - @field_validator('page_size') - def page_size_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['A3', 'A4', 'LETTER']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('A3', 'A4', 'LETTER')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Settings from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in pdf_table_style (list) - _items = [] - if self.pdf_table_style: - for _item_pdf_table_style in self.pdf_table_style: - if _item_pdf_table_style: - _items.append(_item_pdf_table_style.to_dict()) - _dict['pdfTableStyle'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Settings from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "delimiter": obj.get("delimiter"), - "exportInfo": obj.get("exportInfo") if obj.get("exportInfo") is not None else False, - "mergeHeaders": obj.get("mergeHeaders"), - "pageOrientation": obj.get("pageOrientation") if obj.get("pageOrientation") is not None else 'PORTRAIT', - "pageSize": obj.get("pageSize") if obj.get("pageSize") is not None else 'A4', - "pdfPageSize": obj.get("pdfPageSize"), - "pdfTableStyle": [PdfTableStyle.from_dict(_item) for _item in obj["pdfTableStyle"]] if obj.get("pdfTableStyle") is not None else None, - "pdfTopLeftContent": obj.get("pdfTopLeftContent"), - "pdfTopRightContent": obj.get("pdfTopRightContent"), - "showFilters": obj.get("showFilters") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/simple_measure_definition.py b/gooddata-api-client/gooddata_api_client/models/simple_measure_definition.py deleted file mode 100644 index b20f276de..000000000 --- a/gooddata-api-client/gooddata_api_client/models/simple_measure_definition.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.simple_measure_definition_measure import SimpleMeasureDefinitionMeasure -from typing import Optional, Set -from typing_extensions import Self - -class SimpleMeasureDefinition(BaseModel): - """ - Metric defined by referencing a MAQL metric or an LDM fact object with aggregation. - """ # noqa: E501 - measure: SimpleMeasureDefinitionMeasure - __properties: ClassVar[List[str]] = ["measure"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SimpleMeasureDefinition from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of measure - if self.measure: - _dict['measure'] = self.measure.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SimpleMeasureDefinition from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "measure": SimpleMeasureDefinitionMeasure.from_dict(obj["measure"]) if obj.get("measure") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/simple_measure_definition_measure.py b/gooddata-api-client/gooddata_api_client/models/simple_measure_definition_measure.py deleted file mode 100644 index 6b69bd9e4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/simple_measure_definition_measure.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.afm_object_identifier_core import AfmObjectIdentifierCore -from gooddata_api_client.models.filter_definition_for_simple_measure import FilterDefinitionForSimpleMeasure -from typing import Optional, Set -from typing_extensions import Self - -class SimpleMeasureDefinitionMeasure(BaseModel): - """ - SimpleMeasureDefinitionMeasure - """ # noqa: E501 - aggregation: Optional[StrictStr] = Field(default=None, description="Definition of aggregation type of the metric.") - compute_ratio: Optional[StrictBool] = Field(default=False, description="If true, compute the percentage of given metric values (broken down by AFM attributes) to the total (not broken down).", alias="computeRatio") - filters: Optional[List[FilterDefinitionForSimpleMeasure]] = Field(default=None, description="Metrics can be filtered by attribute filters with the same interface as ones for global AFM. Note that only one DateFilter is allowed.") - item: AfmObjectIdentifierCore - __properties: ClassVar[List[str]] = ["aggregation", "computeRatio", "filters", "item"] - - @field_validator('aggregation') - def aggregation_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['SUM', 'COUNT', 'AVG', 'MIN', 'MAX', 'MEDIAN', 'RUNSUM', 'APPROXIMATE_COUNT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUM', 'COUNT', 'AVG', 'MIN', 'MAX', 'MEDIAN', 'RUNSUM', 'APPROXIMATE_COUNT')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SimpleMeasureDefinitionMeasure from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of item - if self.item: - _dict['item'] = self.item.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SimpleMeasureDefinitionMeasure from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "aggregation": obj.get("aggregation"), - "computeRatio": obj.get("computeRatio") if obj.get("computeRatio") is not None else False, - "filters": [FilterDefinitionForSimpleMeasure.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "item": AfmObjectIdentifierCore.from_dict(obj["item"]) if obj.get("item") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/skeleton.py b/gooddata-api-client/gooddata_api_client/models/skeleton.py deleted file mode 100644 index a77267e81..000000000 --- a/gooddata-api-client/gooddata_api_client/models/skeleton.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class Skeleton(BaseModel): - """ - Skeleton - """ # noqa: E501 - content: Optional[List[Dict[str, Any]]] = None - href: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["content", "href"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Skeleton from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Skeleton from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "href": obj.get("href") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/slides_export_request.py b/gooddata-api-client/gooddata_api_client/models/slides_export_request.py deleted file mode 100644 index 29050701e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/slides_export_request.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class SlidesExportRequest(BaseModel): - """ - Export request object describing the export properties and metadata for slides exports. - """ # noqa: E501 - dashboard_id: Optional[StrictStr] = Field(default=None, description="Dashboard identifier", alias="dashboardId") - file_name: StrictStr = Field(description="File name to be used for retrieving the pdf document.", alias="fileName") - format: StrictStr = Field(description="Requested resulting file type.") - metadata: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - template_id: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="Export template identifier.", alias="templateId") - visualization_ids: Optional[Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=255)]], Field(max_length=1)]] = Field(default=None, description="List of visualization ids to be exported. Note that only one visualization is currently supported.", alias="visualizationIds") - widget_ids: Optional[Annotated[List[Annotated[str, Field(min_length=1, strict=True, max_length=255)]], Field(max_length=1)]] = Field(default=None, description="List of widget identifiers to be exported. Note that only one widget is currently supported.", alias="widgetIds") - __properties: ClassVar[List[str]] = ["dashboardId", "fileName", "format", "metadata", "templateId", "visualizationIds", "widgetIds"] - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['PDF', 'PPTX']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('PDF', 'PPTX')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SlidesExportRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - # set to None if template_id (nullable) is None - # and model_fields_set contains the field - if self.template_id is None and "template_id" in self.model_fields_set: - _dict['templateId'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SlidesExportRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardId": obj.get("dashboardId"), - "fileName": obj.get("fileName"), - "format": obj.get("format"), - "metadata": obj.get("metadata"), - "templateId": obj.get("templateId"), - "visualizationIds": obj.get("visualizationIds"), - "widgetIds": obj.get("widgetIds") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/smart_function_response.py b/gooddata-api-client/gooddata_api_client/models/smart_function_response.py deleted file mode 100644 index 4aa6d7921..000000000 --- a/gooddata-api-client/gooddata_api_client/models/smart_function_response.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.execution_links import ExecutionLinks -from typing import Optional, Set -from typing_extensions import Self - -class SmartFunctionResponse(BaseModel): - """ - SmartFunctionResponse - """ # noqa: E501 - links: ExecutionLinks - __properties: ClassVar[List[str]] = ["links"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SmartFunctionResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of links - if self.links: - _dict['links'] = self.links.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SmartFunctionResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "links": ExecutionLinks.from_dict(obj["links"]) if obj.get("links") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/smtp.py b/gooddata-api-client/gooddata_api_client/models/smtp.py deleted file mode 100644 index e09738492..000000000 --- a/gooddata-api-client/gooddata_api_client/models/smtp.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class Smtp(BaseModel): - """ - Custom SMTP destination for notifications. The properties host, port, username, and password are required on create and update - """ # noqa: E501 - from_email: Optional[StrictStr] = Field(default='no-reply@gooddata.com', description="E-mail address to send notifications from.", alias="fromEmail") - from_email_name: Optional[StrictStr] = Field(default='GoodData', description="An optional e-mail name to send notifications from.", alias="fromEmailName") - host: Optional[StrictStr] = Field(default=None, description="The SMTP server address.") - password: Optional[StrictStr] = Field(default=None, description="The SMTP server password.") - port: Optional[StrictInt] = Field(default=None, description="The SMTP server port.") - type: StrictStr = Field(description="The destination type.") - username: Optional[StrictStr] = Field(default=None, description="The SMTP server username.") - __properties: ClassVar[List[str]] = ["fromEmail", "fromEmailName", "host", "password", "port", "type", "username"] - - @field_validator('port') - def port_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set([25, 465, 587, 2525]): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values (25, 465, 587, 2525)") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SMTP']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SMTP')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Smtp from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Smtp from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "fromEmail": obj.get("fromEmail") if obj.get("fromEmail") is not None else 'no-reply@gooddata.com', - "fromEmailName": obj.get("fromEmailName") if obj.get("fromEmailName") is not None else 'GoodData', - "host": obj.get("host"), - "password": obj.get("password"), - "port": obj.get("port"), - "type": obj.get("type"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key.py b/gooddata-api-client/gooddata_api_client/models/sort_key.py deleted file mode 100644 index aa78b843e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.sort_key_attribute import SortKeyAttribute -from gooddata_api_client.models.sort_key_total import SortKeyTotal -from gooddata_api_client.models.sort_key_value import SortKeyValue -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -SORTKEY_ONE_OF_SCHEMAS = ["SortKeyAttribute", "SortKeyTotal", "SortKeyValue"] - -class SortKey(BaseModel): - """ - SortKey - """ - # data type: SortKeyAttribute - oneof_schema_1_validator: Optional[SortKeyAttribute] = None - # data type: SortKeyValue - oneof_schema_2_validator: Optional[SortKeyValue] = None - # data type: SortKeyTotal - oneof_schema_3_validator: Optional[SortKeyTotal] = None - actual_instance: Optional[Union[SortKeyAttribute, SortKeyTotal, SortKeyValue]] = None - one_of_schemas: Set[str] = { "SortKeyAttribute", "SortKeyTotal", "SortKeyValue" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = SortKey.model_construct() - error_messages = [] - match = 0 - # validate data type: SortKeyAttribute - if not isinstance(v, SortKeyAttribute): - error_messages.append(f"Error! Input type `{type(v)}` is not `SortKeyAttribute`") - else: - match += 1 - # validate data type: SortKeyValue - if not isinstance(v, SortKeyValue): - error_messages.append(f"Error! Input type `{type(v)}` is not `SortKeyValue`") - else: - match += 1 - # validate data type: SortKeyTotal - if not isinstance(v, SortKeyTotal): - error_messages.append(f"Error! Input type `{type(v)}` is not `SortKeyTotal`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in SortKey with oneOf schemas: SortKeyAttribute, SortKeyTotal, SortKeyValue. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into SortKeyAttribute - try: - if match == 0: - instance.actual_instance = SortKeyAttribute.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into SortKeyValue - try: - if match == 0: - instance.actual_instance = SortKeyValue.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into SortKeyTotal - try: - if match == 0: - instance.actual_instance = SortKeyTotal.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into SortKey with oneOf schemas: SortKeyAttribute, SortKeyTotal, SortKeyValue. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], SortKeyAttribute, SortKeyTotal, SortKeyValue]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key_attribute.py b/gooddata-api-client/gooddata_api_client/models/sort_key_attribute.py deleted file mode 100644 index f13dc713d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key_attribute.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.sort_key_attribute_attribute import SortKeyAttributeAttribute -from typing import Optional, Set -from typing_extensions import Self - -class SortKeyAttribute(BaseModel): - """ - Sorting rule for sorting by attribute value in current dimension. - """ # noqa: E501 - attribute: SortKeyAttributeAttribute - __properties: ClassVar[List[str]] = ["attribute"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SortKeyAttribute from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of attribute - if self.attribute: - _dict['attribute'] = self.attribute.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SortKeyAttribute from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attribute": SortKeyAttributeAttribute.from_dict(obj["attribute"]) if obj.get("attribute") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key_attribute_attribute.py b/gooddata-api-client/gooddata_api_client/models/sort_key_attribute_attribute.py deleted file mode 100644 index 47f5555f2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key_attribute_attribute.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class SortKeyAttributeAttribute(BaseModel): - """ - SortKeyAttributeAttribute - """ # noqa: E501 - attribute_identifier: StrictStr = Field(description="Item reference (to 'itemIdentifiers') referencing, which item should be used for sorting. Only references to attributes are allowed.", alias="attributeIdentifier") - direction: Optional[StrictStr] = Field(default=None, description="Sorting elements - ascending/descending order.") - sort_type: Optional[StrictStr] = Field(default='DEFAULT', description="Mechanism by which this attribute should be sorted. Available options are: - DEFAULT: sorting based on default rules (using sort column if defined, otherwise this label) - LABEL: sorting by this label values - ATTRIBUTE: sorting by values of this label's attribute (or rather the primary label) - ATTRIBUTE: sorting by values of this label's attribute (or rather the primary label)- AREA: sorting by area (total or subtotal) corresponding to each attribute value. The area is computed by summing up all metric values in all other dimensions.", alias="sortType") - __properties: ClassVar[List[str]] = ["attributeIdentifier", "direction", "sortType"] - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - @field_validator('sort_type') - def sort_type_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['DEFAULT', 'LABEL', 'ATTRIBUTE', 'AREA']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('DEFAULT', 'LABEL', 'ATTRIBUTE', 'AREA')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SortKeyAttributeAttribute from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SortKeyAttributeAttribute from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "attributeIdentifier": obj.get("attributeIdentifier"), - "direction": obj.get("direction"), - "sortType": obj.get("sortType") if obj.get("sortType") is not None else 'DEFAULT' - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key_total.py b/gooddata-api-client/gooddata_api_client/models/sort_key_total.py deleted file mode 100644 index ee53eb358..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key_total.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.sort_key_total_total import SortKeyTotalTotal -from typing import Optional, Set -from typing_extensions import Self - -class SortKeyTotal(BaseModel): - """ - Sorting rule for sorting by total value. DataColumnLocators are only required if there is ambiguity. Locator for measureGroup is taken from the metric of the total. - """ # noqa: E501 - total: SortKeyTotalTotal - __properties: ClassVar[List[str]] = ["total"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SortKeyTotal from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of total - if self.total: - _dict['total'] = self.total.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SortKeyTotal from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "total": SortKeyTotalTotal.from_dict(obj["total"]) if obj.get("total") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key_total_total.py b/gooddata-api-client/gooddata_api_client/models/sort_key_total_total.py deleted file mode 100644 index 6fa7ad2d0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key_total_total.py +++ /dev/null @@ -1,107 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.data_column_locators import DataColumnLocators -from typing import Optional, Set -from typing_extensions import Self - -class SortKeyTotalTotal(BaseModel): - """ - SortKeyTotalTotal - """ # noqa: E501 - data_column_locators: Optional[DataColumnLocators] = Field(default=None, alias="dataColumnLocators") - direction: Optional[StrictStr] = Field(default=None, description="Sorting elements - ascending/descending order.") - total_identifier: StrictStr = Field(description="Local identifier of the total to sort by.", alias="totalIdentifier") - __properties: ClassVar[List[str]] = ["dataColumnLocators", "direction", "totalIdentifier"] - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SortKeyTotalTotal from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data_column_locators - if self.data_column_locators: - _dict['dataColumnLocators'] = self.data_column_locators.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SortKeyTotalTotal from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataColumnLocators": DataColumnLocators.from_dict(obj["dataColumnLocators"]) if obj.get("dataColumnLocators") is not None else None, - "direction": obj.get("direction"), - "totalIdentifier": obj.get("totalIdentifier") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key_value.py b/gooddata-api-client/gooddata_api_client/models/sort_key_value.py deleted file mode 100644 index d7e35d13d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key_value.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.sort_key_value_value import SortKeyValueValue -from typing import Optional, Set -from typing_extensions import Self - -class SortKeyValue(BaseModel): - """ - Sorting rule for sorting by measure value. DataColumnLocators for each dimension opposite to the sorted one must be specified. - """ # noqa: E501 - value: SortKeyValueValue - __properties: ClassVar[List[str]] = ["value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SortKeyValue from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of value - if self.value: - _dict['value'] = self.value.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SortKeyValue from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "value": SortKeyValueValue.from_dict(obj["value"]) if obj.get("value") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sort_key_value_value.py b/gooddata-api-client/gooddata_api_client/models/sort_key_value_value.py deleted file mode 100644 index 8d0fbd8ce..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sort_key_value_value.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.data_column_locators import DataColumnLocators -from typing import Optional, Set -from typing_extensions import Self - -class SortKeyValueValue(BaseModel): - """ - SortKeyValueValue - """ # noqa: E501 - data_column_locators: DataColumnLocators = Field(alias="dataColumnLocators") - direction: Optional[StrictStr] = Field(default=None, description="Sorting elements - ascending/descending order.") - __properties: ClassVar[List[str]] = ["dataColumnLocators", "direction"] - - @field_validator('direction') - def direction_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - if value not in set(['ASC', 'DESC']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('ASC', 'DESC')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SortKeyValueValue from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data_column_locators - if self.data_column_locators: - _dict['dataColumnLocators'] = self.data_column_locators.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SortKeyValueValue from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataColumnLocators": DataColumnLocators.from_dict(obj["dataColumnLocators"]) if obj.get("dataColumnLocators") is not None else None, - "direction": obj.get("direction") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sql_column.py b/gooddata-api-client/gooddata_api_client/models/sql_column.py deleted file mode 100644 index d1bedcf82..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sql_column.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class SqlColumn(BaseModel): - """ - A SQL query result column. - """ # noqa: E501 - data_type: StrictStr = Field(description="Column type", alias="dataType") - description: Optional[StrictStr] = Field(default=None, description="Column description/comment from database") - name: StrictStr = Field(description="Column name") - __properties: ClassVar[List[str]] = ["dataType", "description", "name"] - - @field_validator('data_type') - def data_type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('INT', 'STRING', 'DATE', 'NUMERIC', 'TIMESTAMP', 'TIMESTAMP_TZ', 'BOOLEAN')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SqlColumn from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SqlColumn from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataType": obj.get("dataType"), - "description": obj.get("description"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/sql_query.py b/gooddata-api-client/gooddata_api_client/models/sql_query.py deleted file mode 100644 index 3e24b38e6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/sql_query.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class SqlQuery(BaseModel): - """ - SqlQuery - """ # noqa: E501 - sql: StrictStr - __properties: ClassVar[List[str]] = ["sql"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SqlQuery from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SqlQuery from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "sql": obj.get("sql") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/succeeded_operation.py b/gooddata-api-client/gooddata_api_client/models/succeeded_operation.py deleted file mode 100644 index 9cfd74f0f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/succeeded_operation.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.operation import Operation -from typing import Optional, Set -from typing_extensions import Self - -class SucceededOperation(Operation): - """ - Operation that has succeeded - """ # noqa: E501 - result: Optional[Dict[str, Any]] = Field(default=None, description="Operation-specific result payload, can be missing for operations like delete") - __properties: ClassVar[List[str]] = ["id", "kind", "status", "result"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SucceededOperation from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SucceededOperation from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "kind": obj.get("kind"), - "status": obj.get("status"), - "result": obj.get("result") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/suggestion.py b/gooddata-api-client/gooddata_api_client/models/suggestion.py deleted file mode 100644 index 041cf69d9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/suggestion.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class Suggestion(BaseModel): - """ - List of suggestions for next steps. Filled when no visualization was created, suggests alternatives. - """ # noqa: E501 - label: StrictStr = Field(description="Suggestion button label") - query: StrictStr = Field(description="Suggestion query") - __properties: ClassVar[List[str]] = ["label", "query"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Suggestion from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Suggestion from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "label": obj.get("label"), - "query": obj.get("query") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/switch_identity_provider_request.py b/gooddata-api-client/gooddata_api_client/models/switch_identity_provider_request.py deleted file mode 100644 index dd350fada..000000000 --- a/gooddata-api-client/gooddata_api_client/models/switch_identity_provider_request.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class SwitchIdentityProviderRequest(BaseModel): - """ - SwitchIdentityProviderRequest - """ # noqa: E501 - idp_id: StrictStr = Field(description="Identity provider ID to set as active for the organization.", alias="idpId") - __properties: ClassVar[List[str]] = ["idpId"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of SwitchIdentityProviderRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of SwitchIdentityProviderRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "idpId": obj.get("idpId") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/table.py b/gooddata-api-client/gooddata_api_client/models/table.py deleted file mode 100644 index 15a20e00d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/table.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class Table(BaseModel): - """ - Table - """ # noqa: E501 - table_name: StrictStr = Field(alias="tableName") - __properties: ClassVar[List[str]] = ["tableName"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Table from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Table from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "tableName": obj.get("tableName") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/table_override.py b/gooddata-api-client/gooddata_api_client/models/table_override.py deleted file mode 100644 index 0bbe75132..000000000 --- a/gooddata-api-client/gooddata_api_client/models/table_override.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.column_override import ColumnOverride -from typing import Optional, Set -from typing_extensions import Self - -class TableOverride(BaseModel): - """ - Table override settings. - """ # noqa: E501 - columns: List[ColumnOverride] = Field(description="An array of column overrides") - path: List[StrictStr] = Field(description="Path for the table.") - __properties: ClassVar[List[str]] = ["columns", "path"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TableOverride from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in columns (list) - _items = [] - if self.columns: - for _item_columns in self.columns: - if _item_columns: - _items.append(_item_columns.to_dict()) - _dict['columns'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TableOverride from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columns": [ColumnOverride.from_dict(_item) for _item in obj["columns"]] if obj.get("columns") is not None else None, - "path": obj.get("path") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/table_warning.py b/gooddata-api-client/gooddata_api_client/models/table_warning.py deleted file mode 100644 index 7cc4459ba..000000000 --- a/gooddata-api-client/gooddata_api_client/models/table_warning.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.column_warning import ColumnWarning -from typing import Optional, Set -from typing_extensions import Self - -class TableWarning(BaseModel): - """ - Warnings related to single table. - """ # noqa: E501 - columns: List[ColumnWarning] - message: Optional[StrictStr] = Field(default=None, description="Warning message related to the table.") - name: StrictStr = Field(description="Table name.") - __properties: ClassVar[List[str]] = ["columns", "message", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TableWarning from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in columns (list) - _items = [] - if self.columns: - for _item_columns in self.columns: - if _item_columns: - _items.append(_item_columns.to_dict()) - _dict['columns'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TableWarning from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "columns": [ColumnWarning.from_dict(_item) for _item in obj["columns"]] if obj.get("columns") is not None else None, - "message": obj.get("message"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/tabular_export_request.py b/gooddata-api-client/gooddata_api_client/models/tabular_export_request.py deleted file mode 100644 index 685d6e42d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/tabular_export_request.py +++ /dev/null @@ -1,125 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.custom_override import CustomOverride -from gooddata_api_client.models.settings import Settings -from typing import Optional, Set -from typing_extensions import Self - -class TabularExportRequest(BaseModel): - """ - Export request object describing the export properties and overrides for tabular exports. - """ # noqa: E501 - custom_override: Optional[CustomOverride] = Field(default=None, alias="customOverride") - execution_result: Optional[StrictStr] = Field(default=None, description="Execution result identifier.", alias="executionResult") - file_name: StrictStr = Field(description="Filename of downloaded file without extension.", alias="fileName") - format: StrictStr = Field(description="Expected file format.") - metadata: Optional[Dict[str, Any]] = Field(default=None, description="Free-form JSON object") - related_dashboard_id: Optional[StrictStr] = Field(default=None, description="Analytical dashboard identifier. Optional identifier, which informs the system that the export is related to a specific dashboard.", alias="relatedDashboardId") - settings: Optional[Settings] = None - visualization_object: Optional[StrictStr] = Field(default=None, description="Visualization object identifier. Alternative to executionResult property.", alias="visualizationObject") - visualization_object_custom_filters: Optional[List[Dict[str, Any]]] = Field(default=None, description="Optional custom filters (as array of IFilter objects defined in UI SDK) to be applied when visualizationObject is given. Those filters override the original filters defined in the visualization.", alias="visualizationObjectCustomFilters") - __properties: ClassVar[List[str]] = ["customOverride", "executionResult", "fileName", "format", "metadata", "relatedDashboardId", "settings", "visualizationObject", "visualizationObjectCustomFilters"] - - @field_validator('format') - def format_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['CSV', 'XLSX', 'HTML', 'PDF']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('CSV', 'XLSX', 'HTML', 'PDF')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TabularExportRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of custom_override - if self.custom_override: - _dict['customOverride'] = self.custom_override.to_dict() - # override the default output from pydantic by calling `to_dict()` of settings - if self.settings: - _dict['settings'] = self.settings.to_dict() - # set to None if metadata (nullable) is None - # and model_fields_set contains the field - if self.metadata is None and "metadata" in self.model_fields_set: - _dict['metadata'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TabularExportRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "customOverride": CustomOverride.from_dict(obj["customOverride"]) if obj.get("customOverride") is not None else None, - "executionResult": obj.get("executionResult"), - "fileName": obj.get("fileName"), - "format": obj.get("format"), - "metadata": obj.get("metadata"), - "relatedDashboardId": obj.get("relatedDashboardId"), - "settings": Settings.from_dict(obj["settings"]) if obj.get("settings") is not None else None, - "visualizationObject": obj.get("visualizationObject"), - "visualizationObjectCustomFilters": obj.get("visualizationObjectCustomFilters") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_definition_request.py b/gooddata-api-client/gooddata_api_client/models/test_definition_request.py deleted file mode 100644 index 3d472159c..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_definition_request.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.data_source_parameter import DataSourceParameter -from typing import Optional, Set -from typing_extensions import Self - -class TestDefinitionRequest(BaseModel): - """ - A request containing all information for testing data source definition. - """ # noqa: E501 - client_id: Optional[StrictStr] = Field(default=None, description="Id for client based authentication for data sources which supports it.", alias="clientId") - client_secret: Optional[StrictStr] = Field(default=None, description="Secret for client based authentication for data sources which supports it.", alias="clientSecret") - parameters: Optional[List[DataSourceParameter]] = None - password: Optional[StrictStr] = Field(default=None, description="Database user password.") - private_key: Optional[StrictStr] = Field(default=None, description="Private key for data sources which supports key-pair authentication.", alias="privateKey") - private_key_passphrase: Optional[StrictStr] = Field(default=None, description="Passphrase for a encrypted version of a private key.", alias="privateKeyPassphrase") - var_schema: Optional[StrictStr] = Field(default=None, description="Database schema.", alias="schema") - token: Optional[StrictStr] = Field(default=None, description="Secret for token based authentication for data sources which supports it.") - type: StrictStr = Field(description="Type of database, where test should connect to.") - url: Optional[StrictStr] = Field(default=None, description="URL to database in JDBC format, where test should connect to.") - username: Optional[StrictStr] = Field(default=None, description="Database user name.") - __properties: ClassVar[List[str]] = ["clientId", "clientSecret", "parameters", "password", "privateKey", "privateKeyPassphrase", "schema", "token", "type", "url", "username"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('POSTGRESQL', 'REDSHIFT', 'VERTICA', 'SNOWFLAKE', 'ADS', 'BIGQUERY', 'MSSQL', 'PRESTO', 'DREMIO', 'DRILL', 'GREENPLUM', 'AZURESQL', 'SYNAPSESQL', 'DATABRICKS', 'GDSTORAGE', 'CLICKHOUSE', 'MYSQL', 'MARIADB', 'ORACLE', 'PINOT', 'SINGLESTORE', 'MOTHERDUCK', 'FLEXCONNECT', 'STARROCKS', 'ATHENA', 'MONGODB', 'CRATEDB', 'AILAKEHOUSE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestDefinitionRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) - _items = [] - if self.parameters: - for _item_parameters in self.parameters: - if _item_parameters: - _items.append(_item_parameters.to_dict()) - _dict['parameters'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestDefinitionRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "clientId": obj.get("clientId"), - "clientSecret": obj.get("clientSecret"), - "parameters": [DataSourceParameter.from_dict(_item) for _item in obj["parameters"]] if obj.get("parameters") is not None else None, - "password": obj.get("password"), - "privateKey": obj.get("privateKey"), - "privateKeyPassphrase": obj.get("privateKeyPassphrase"), - "schema": obj.get("schema"), - "token": obj.get("token"), - "type": obj.get("type"), - "url": obj.get("url"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_destination_request.py b/gooddata-api-client/gooddata_api_client/models/test_destination_request.py deleted file mode 100644 index 824b46c56..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_destination_request.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.automation_external_recipient import AutomationExternalRecipient -from gooddata_api_client.models.declarative_notification_channel_destination import DeclarativeNotificationChannelDestination -from typing import Optional, Set -from typing_extensions import Self - -class TestDestinationRequest(BaseModel): - """ - Request body with notification channel destination to test. - """ # noqa: E501 - destination: DeclarativeNotificationChannelDestination - external_recipients: Optional[Annotated[List[AutomationExternalRecipient], Field(max_length=1)]] = Field(default=None, description="External recipients of the test result.", alias="externalRecipients") - __properties: ClassVar[List[str]] = ["destination", "externalRecipients"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestDestinationRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of destination - if self.destination: - _dict['destination'] = self.destination.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in external_recipients (list) - _items = [] - if self.external_recipients: - for _item_external_recipients in self.external_recipients: - if _item_external_recipients: - _items.append(_item_external_recipients.to_dict()) - _dict['externalRecipients'] = _items - # set to None if external_recipients (nullable) is None - # and model_fields_set contains the field - if self.external_recipients is None and "external_recipients" in self.model_fields_set: - _dict['externalRecipients'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestDestinationRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "destination": DeclarativeNotificationChannelDestination.from_dict(obj["destination"]) if obj.get("destination") is not None else None, - "externalRecipients": [AutomationExternalRecipient.from_dict(_item) for _item in obj["externalRecipients"]] if obj.get("externalRecipients") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request.py b/gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request.py deleted file mode 100644 index b58a0dc31..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.llm_model import LlmModel -from gooddata_api_client.models.test_llm_provider_definition_request_provider_config import TestLlmProviderDefinitionRequestProviderConfig -from typing import Optional, Set -from typing_extensions import Self - -class TestLlmProviderDefinitionRequest(BaseModel): - """ - TestLlmProviderDefinitionRequest - """ # noqa: E501 - models: Optional[List[LlmModel]] = Field(default=None, description="Models to test.") - provider_config: TestLlmProviderDefinitionRequestProviderConfig = Field(alias="providerConfig") - __properties: ClassVar[List[str]] = ["models", "providerConfig"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestLlmProviderDefinitionRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in models (list) - _items = [] - if self.models: - for _item_models in self.models: - if _item_models: - _items.append(_item_models.to_dict()) - _dict['models'] = _items - # override the default output from pydantic by calling `to_dict()` of provider_config - if self.provider_config: - _dict['providerConfig'] = self.provider_config.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestLlmProviderDefinitionRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "models": [LlmModel.from_dict(_item) for _item in obj["models"]] if obj.get("models") is not None else None, - "providerConfig": TestLlmProviderDefinitionRequestProviderConfig.from_dict(obj["providerConfig"]) if obj.get("providerConfig") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request_provider_config.py b/gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request_provider_config.py deleted file mode 100644 index 02306d0ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_llm_provider_definition_request_provider_config.py +++ /dev/null @@ -1,156 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -import pprint -from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator -from typing import Any, List, Optional -from gooddata_api_client.models.aws_bedrock_provider_config import AwsBedrockProviderConfig -from gooddata_api_client.models.azure_foundry_provider_config import AzureFoundryProviderConfig -from gooddata_api_client.models.open_ai_provider_config import OpenAIProviderConfig -from pydantic import StrictStr, Field -from typing import Union, List, Set, Optional, Dict -from typing_extensions import Literal, Self - -TESTLLMPROVIDERDEFINITIONREQUESTPROVIDERCONFIG_ONE_OF_SCHEMAS = ["AwsBedrockProviderConfig", "AzureFoundryProviderConfig", "OpenAIProviderConfig"] - -class TestLlmProviderDefinitionRequestProviderConfig(BaseModel): - """ - TestLlmProviderDefinitionRequestProviderConfig - """ - # data type: AwsBedrockProviderConfig - oneof_schema_1_validator: Optional[AwsBedrockProviderConfig] = None - # data type: AzureFoundryProviderConfig - oneof_schema_2_validator: Optional[AzureFoundryProviderConfig] = None - # data type: OpenAIProviderConfig - oneof_schema_3_validator: Optional[OpenAIProviderConfig] = None - actual_instance: Optional[Union[AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig]] = None - one_of_schemas: Set[str] = { "AwsBedrockProviderConfig", "AzureFoundryProviderConfig", "OpenAIProviderConfig" } - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - ) - - - def __init__(self, *args, **kwargs) -> None: - if args: - if len(args) > 1: - raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") - if kwargs: - raise ValueError("If a position argument is used, keyword arguments cannot be used.") - super().__init__(actual_instance=args[0]) - else: - super().__init__(**kwargs) - - @field_validator('actual_instance') - def actual_instance_must_validate_oneof(cls, v): - instance = TestLlmProviderDefinitionRequestProviderConfig.model_construct() - error_messages = [] - match = 0 - # validate data type: AwsBedrockProviderConfig - if not isinstance(v, AwsBedrockProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `AwsBedrockProviderConfig`") - else: - match += 1 - # validate data type: AzureFoundryProviderConfig - if not isinstance(v, AzureFoundryProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `AzureFoundryProviderConfig`") - else: - match += 1 - # validate data type: OpenAIProviderConfig - if not isinstance(v, OpenAIProviderConfig): - error_messages.append(f"Error! Input type `{type(v)}` is not `OpenAIProviderConfig`") - else: - match += 1 - if match > 1: - # more than 1 match - # Accept first match for forward/backward compatibility - return v - elif match == 0: - # no match - raise ValueError("No match found when setting `actual_instance` in TestLlmProviderDefinitionRequestProviderConfig with oneOf schemas: AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig. Details: " + ", ".join(error_messages)) - else: - return v - - @classmethod - def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: - return cls.from_json(json.dumps(obj)) - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Returns the object represented by the json string""" - instance = cls.model_construct() - error_messages = [] - match = 0 - - # deserialize data into AwsBedrockProviderConfig - try: - if match == 0: - instance.actual_instance = AwsBedrockProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into AzureFoundryProviderConfig - try: - if match == 0: - instance.actual_instance = AzureFoundryProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - # deserialize data into OpenAIProviderConfig - try: - if match == 0: - instance.actual_instance = OpenAIProviderConfig.from_json(json_str) - match += 1 - except (ValidationError, ValueError) as e: - error_messages.append(str(e)) - - if match > 1: - # Accept first match for forward/backward compatibility - return instance - elif match == 0: - # no match - raise ValueError("No match found when deserializing the JSON string into TestLlmProviderDefinitionRequestProviderConfig with oneOf schemas: AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig. Details: " + ", ".join(error_messages)) - else: - return instance - - def to_json(self) -> str: - """Returns the JSON representation of the actual instance""" - if self.actual_instance is None: - return "null" - - if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): - return self.actual_instance.to_json() - else: - return json.dumps(self.actual_instance) - - def to_dict(self) -> Optional[Union[Dict[str, Any], AwsBedrockProviderConfig, AzureFoundryProviderConfig, OpenAIProviderConfig]]: - """Returns the dict representation of the actual instance""" - if self.actual_instance is None: - return None - - if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): - return self.actual_instance.to_dict() - else: - # primitive type - return self.actual_instance - - def to_str(self) -> str: - """Returns the string representation of the actual instance""" - return pprint.pformat(self.model_dump()) - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_llm_provider_response.py b/gooddata-api-client/gooddata_api_client/models/test_llm_provider_response.py deleted file mode 100644 index e71aa4d03..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_llm_provider_response.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.model_test_result import ModelTestResult -from typing import Optional, Set -from typing_extensions import Self - -class TestLlmProviderResponse(BaseModel): - """ - TestLlmProviderResponse - """ # noqa: E501 - model_results: List[ModelTestResult] = Field(description="Per-model test results.", alias="modelResults") - provider_message: StrictStr = Field(description="Message about the provider connectivity test.", alias="providerMessage") - provider_reachable: StrictBool = Field(description="Whether the LLM provider is reachable.", alias="providerReachable") - __properties: ClassVar[List[str]] = ["modelResults", "providerMessage", "providerReachable"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestLlmProviderResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in model_results (list) - _items = [] - if self.model_results: - for _item_model_results in self.model_results: - if _item_model_results: - _items.append(_item_model_results.to_dict()) - _dict['modelResults'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestLlmProviderResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "modelResults": [ModelTestResult.from_dict(_item) for _item in obj["modelResults"]] if obj.get("modelResults") is not None else None, - "providerMessage": obj.get("providerMessage"), - "providerReachable": obj.get("providerReachable") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_notification.py b/gooddata-api-client/gooddata_api_client/models/test_notification.py deleted file mode 100644 index f413a377f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_notification.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.notification_content import NotificationContent -from typing import Optional, Set -from typing_extensions import Self - -class TestNotification(NotificationContent): - """ - TestNotification - """ # noqa: E501 - message: StrictStr - __properties: ClassVar[List[str]] = ["type", "message"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestNotification from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestNotification from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "type": obj.get("type"), - "message": obj.get("message") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_query_duration.py b/gooddata-api-client/gooddata_api_client/models/test_query_duration.py deleted file mode 100644 index 871abccf0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_query_duration.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class TestQueryDuration(BaseModel): - """ - A structure containing duration of the test queries run on a data source. It is omitted if an error happens. - """ # noqa: E501 - create_cache_table: Optional[StrictInt] = Field(default=None, description="Field containing duration of a test 'create table as select' query on a datasource. In milliseconds. The field is omitted if a data source doesn't support caching.", alias="createCacheTable") - simple_select: StrictInt = Field(description="Field containing duration of a test select query on a data source. In milliseconds.", alias="simpleSelect") - __properties: ClassVar[List[str]] = ["createCacheTable", "simpleSelect"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestQueryDuration from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestQueryDuration from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "createCacheTable": obj.get("createCacheTable"), - "simpleSelect": obj.get("simpleSelect") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_request.py b/gooddata-api-client/gooddata_api_client/models/test_request.py deleted file mode 100644 index 08d861113..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_request.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.data_source_parameter import DataSourceParameter -from typing import Optional, Set -from typing_extensions import Self - -class TestRequest(BaseModel): - """ - A request containing all information for testing existing data source. - """ # noqa: E501 - client_id: Optional[StrictStr] = Field(default=None, description="Id for client based authentication for data sources which supports it.", alias="clientId") - client_secret: Optional[StrictStr] = Field(default=None, description="Secret for client based authentication for data sources which supports it.", alias="clientSecret") - parameters: Optional[List[DataSourceParameter]] = None - password: Optional[StrictStr] = Field(default=None, description="Database user password.") - private_key: Optional[StrictStr] = Field(default=None, description="Private key for data sources which supports key-pair authentication.", alias="privateKey") - private_key_passphrase: Optional[StrictStr] = Field(default=None, description="Passphrase for a encrypted version of a private key.", alias="privateKeyPassphrase") - var_schema: Optional[StrictStr] = Field(default=None, description="Database schema.", alias="schema") - token: Optional[StrictStr] = Field(default=None, description="Secret for token based authentication for data sources which supports it.") - url: Optional[StrictStr] = Field(default=None, description="URL to database in JDBC format, where test should connect to.") - username: Optional[StrictStr] = Field(default=None, description="Database user name.") - __properties: ClassVar[List[str]] = ["clientId", "clientSecret", "parameters", "password", "privateKey", "privateKeyPassphrase", "schema", "token", "url", "username"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in parameters (list) - _items = [] - if self.parameters: - for _item_parameters in self.parameters: - if _item_parameters: - _items.append(_item_parameters.to_dict()) - _dict['parameters'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "clientId": obj.get("clientId"), - "clientSecret": obj.get("clientSecret"), - "parameters": [DataSourceParameter.from_dict(_item) for _item in obj["parameters"]] if obj.get("parameters") is not None else None, - "password": obj.get("password"), - "privateKey": obj.get("privateKey"), - "privateKeyPassphrase": obj.get("privateKeyPassphrase"), - "schema": obj.get("schema"), - "token": obj.get("token"), - "url": obj.get("url"), - "username": obj.get("username") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/test_response.py b/gooddata-api-client/gooddata_api_client/models/test_response.py deleted file mode 100644 index c03271cab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/test_response.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.test_query_duration import TestQueryDuration -from typing import Optional, Set -from typing_extensions import Self - -class TestResponse(BaseModel): - """ - Response from data source testing. - """ # noqa: E501 - error: Optional[StrictStr] = Field(default=None, description="Field containing more details in case of a failure. Details are available to a privileged user only.") - query_duration_millis: Optional[TestQueryDuration] = Field(default=None, alias="queryDurationMillis") - successful: StrictBool = Field(description="A flag indicating whether test passed or not.") - __properties: ClassVar[List[str]] = ["error", "queryDurationMillis", "successful"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of query_duration_millis - if self.query_duration_millis: - _dict['queryDurationMillis'] = self.query_duration_millis.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "error": obj.get("error"), - "queryDurationMillis": TestQueryDuration.from_dict(obj["queryDurationMillis"]) if obj.get("queryDurationMillis") is not None else None, - "successful": obj.get("successful") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/thought.py b/gooddata-api-client/gooddata_api_client/models/thought.py deleted file mode 100644 index 5b2cc3782..000000000 --- a/gooddata-api-client/gooddata_api_client/models/thought.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class Thought(BaseModel): - """ - Detailed thoughts/messages within this step. - """ # noqa: E501 - text: StrictStr = Field(description="The text content of this thought.") - __properties: ClassVar[List[str]] = ["text"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Thought from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Thought from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "text": obj.get("text") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/total.py b/gooddata-api-client/gooddata_api_client/models/total.py deleted file mode 100644 index 4a04759fd..000000000 --- a/gooddata-api-client/gooddata_api_client/models/total.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.total_dimension import TotalDimension -from typing import Optional, Set -from typing_extensions import Self - -class Total(BaseModel): - """ - Definition of a total. There are two types of totals: grand totals and subtotals. Grand total data will be returned in a separate section of the result structure while subtotals are fully integrated into the main result data. The mechanism for this distinction is automatic and it's described in `TotalDimension` - """ # noqa: E501 - function: StrictStr = Field(description="Aggregation function to compute the total.") - local_identifier: StrictStr = Field(description="Total identification within this request. Used e.g. in sorting by a total.", alias="localIdentifier") - metric: StrictStr = Field(description="The metric for which the total will be computed") - total_dimensions: List[TotalDimension] = Field(alias="totalDimensions") - __properties: ClassVar[List[str]] = ["function", "localIdentifier", "metric", "totalDimensions"] - - @field_validator('function') - def function_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['SUM', 'MIN', 'MAX', 'AVG', 'MED', 'NAT']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('SUM', 'MIN', 'MAX', 'AVG', 'MED', 'NAT')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Total from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in total_dimensions (list) - _items = [] - if self.total_dimensions: - for _item_total_dimensions in self.total_dimensions: - if _item_total_dimensions: - _items.append(_item_total_dimensions.to_dict()) - _dict['totalDimensions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Total from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "function": obj.get("function"), - "localIdentifier": obj.get("localIdentifier"), - "metric": obj.get("metric"), - "totalDimensions": [TotalDimension.from_dict(_item) for _item in obj["totalDimensions"]] if obj.get("totalDimensions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/total_dimension.py b/gooddata-api-client/gooddata_api_client/models/total_dimension.py deleted file mode 100644 index bbf7d948e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/total_dimension.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class TotalDimension(BaseModel): - """ - A list of dimensions across which the total will be computed. Total headers for only these dimensions will be returned in the result. - """ # noqa: E501 - dimension_identifier: Annotated[str, Field(strict=True)] = Field(description="An identifier of a dimension for which the total will be computed.", alias="dimensionIdentifier") - total_dimension_items: List[StrictStr] = Field(description="List of dimension items which will be used for total computation. The total is a grand total in this dimension if the list is empty or it includes the first dimension item from the dimension definition, and its data and header will be returned in a separate `ExecutionResultGrandTotal` structure. Otherwise, it is a subtotal and the data will be integrated into the main result.", alias="totalDimensionItems") - __properties: ClassVar[List[str]] = ["dimensionIdentifier", "totalDimensionItems"] - - @field_validator('dimension_identifier') - def dimension_identifier_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[.a-zA-Z0-9_-]+$", value): - raise ValueError(r"must validate the regular expression /^[.a-zA-Z0-9_-]+$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TotalDimension from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TotalDimension from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dimensionIdentifier": obj.get("dimensionIdentifier"), - "totalDimensionItems": obj.get("totalDimensionItems") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/total_execution_result_header.py b/gooddata-api-client/gooddata_api_client/models/total_execution_result_header.py deleted file mode 100644 index f3789fb5d..000000000 --- a/gooddata-api-client/gooddata_api_client/models/total_execution_result_header.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.total_result_header import TotalResultHeader -from typing import Optional, Set -from typing_extensions import Self - -class TotalExecutionResultHeader(BaseModel): - """ - TotalExecutionResultHeader - """ # noqa: E501 - total_header: TotalResultHeader = Field(alias="totalHeader") - __properties: ClassVar[List[str]] = ["totalHeader"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TotalExecutionResultHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of total_header - if self.total_header: - _dict['totalHeader'] = self.total_header.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TotalExecutionResultHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "totalHeader": TotalResultHeader.from_dict(obj["totalHeader"]) if obj.get("totalHeader") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/total_result_header.py b/gooddata-api-client/gooddata_api_client/models/total_result_header.py deleted file mode 100644 index 59547cd40..000000000 --- a/gooddata-api-client/gooddata_api_client/models/total_result_header.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class TotalResultHeader(BaseModel): - """ - Header containing the information related to a subtotal. - """ # noqa: E501 - function: StrictStr - __properties: ClassVar[List[str]] = ["function"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TotalResultHeader from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TotalResultHeader from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "function": obj.get("function") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/trigger_automation_request.py b/gooddata-api-client/gooddata_api_client/models/trigger_automation_request.py deleted file mode 100644 index 768321fa9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/trigger_automation_request.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.ad_hoc_automation import AdHocAutomation -from typing import Optional, Set -from typing_extensions import Self - -class TriggerAutomationRequest(BaseModel): - """ - TriggerAutomationRequest - """ # noqa: E501 - automation: AdHocAutomation - __properties: ClassVar[List[str]] = ["automation"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TriggerAutomationRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of automation - if self.automation: - _dict['automation'] = self.automation.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TriggerAutomationRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "automation": AdHocAutomation.from_dict(obj["automation"]) if obj.get("automation") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/trigger_quality_issues_calculation_response.py b/gooddata-api-client/gooddata_api_client/models/trigger_quality_issues_calculation_response.py deleted file mode 100644 index 642dc4255..000000000 --- a/gooddata-api-client/gooddata_api_client/models/trigger_quality_issues_calculation_response.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class TriggerQualityIssuesCalculationResponse(BaseModel): - """ - TriggerQualityIssuesCalculationResponse - """ # noqa: E501 - process_id: StrictStr = Field(description="Process ID for tracking the calculation status", alias="processId") - status: StrictStr = Field(description="Current status of the calculation") - __properties: ClassVar[List[str]] = ["processId", "status"] - - @field_validator('status') - def status_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['RUNNING', 'COMPLETED', 'FAILED', 'CANCELLED', 'DISABLED']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('RUNNING', 'COMPLETED', 'FAILED', 'CANCELLED', 'DISABLED')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TriggerQualityIssuesCalculationResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TriggerQualityIssuesCalculationResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "processId": obj.get("processId"), - "status": obj.get("status") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_request_dto.py b/gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_request_dto.py deleted file mode 100644 index 5ac93db8e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_request_dto.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UpsertKnowledgeDocumentRequestDto(BaseModel): - """ - UpsertKnowledgeDocumentRequestDto - """ # noqa: E501 - content: StrictStr - filename: StrictStr - page_boundaries: Optional[List[StrictInt]] = Field(default=None, alias="pageBoundaries") - scopes: Optional[List[StrictStr]] = None - title: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["content", "filename", "pageBoundaries", "scopes", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UpsertKnowledgeDocumentRequestDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UpsertKnowledgeDocumentRequestDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "content": obj.get("content"), - "filename": obj.get("filename"), - "pageBoundaries": obj.get("pageBoundaries"), - "scopes": obj.get("scopes"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_response_dto.py b/gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_response_dto.py deleted file mode 100644 index 4bc21e1a2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/upsert_knowledge_document_response_dto.py +++ /dev/null @@ -1,94 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class UpsertKnowledgeDocumentResponseDto(BaseModel): - """ - UpsertKnowledgeDocumentResponseDto - """ # noqa: E501 - filename: StrictStr - message: StrictStr - num_chunks: StrictInt = Field(alias="numChunks") - success: StrictBool - __properties: ClassVar[List[str]] = ["filename", "message", "numChunks", "success"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UpsertKnowledgeDocumentResponseDto from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UpsertKnowledgeDocumentResponseDto from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "filename": obj.get("filename"), - "message": obj.get("message"), - "numChunks": obj.get("numChunks"), - "success": obj.get("success") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_assignee.py b/gooddata-api-client/gooddata_api_client/models/user_assignee.py deleted file mode 100644 index f3687d191..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_assignee.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UserAssignee(BaseModel): - """ - List of users - """ # noqa: E501 - email: Optional[StrictStr] = Field(default=None, description="User email address") - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="User name") - __properties: ClassVar[List[str]] = ["email", "id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserAssignee from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserAssignee from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email"), - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_context.py b/gooddata-api-client/gooddata_api_client/models/user_context.py deleted file mode 100644 index 4c717e5c0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_context.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.active_object_identification import ActiveObjectIdentification -from typing import Optional, Set -from typing_extensions import Self - -class UserContext(BaseModel): - """ - User context, which can affect the behavior of the underlying AI features. - """ # noqa: E501 - active_object: ActiveObjectIdentification = Field(alias="activeObject") - __properties: ClassVar[List[str]] = ["activeObject"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserContext from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of active_object - if self.active_object: - _dict['activeObject'] = self.active_object.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserContext from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "activeObject": ActiveObjectIdentification.from_dict(obj["activeObject"]) if obj.get("activeObject") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_group_assignee.py b/gooddata-api-client/gooddata_api_client/models/user_group_assignee.py deleted file mode 100644 index c1b2ef2d3..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_group_assignee.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UserGroupAssignee(BaseModel): - """ - List of user groups - """ # noqa: E501 - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="User group name") - __properties: ClassVar[List[str]] = ["id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserGroupAssignee from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserGroupAssignee from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_group_identifier.py b/gooddata-api-client/gooddata_api_client/models/user_group_identifier.py deleted file mode 100644 index dcddbb8bb..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_group_identifier.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UserGroupIdentifier(BaseModel): - """ - A list of groups where user is a member - """ # noqa: E501 - id: StrictStr - name: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserGroupIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserGroupIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_group_permission.py b/gooddata-api-client/gooddata_api_client/models/user_group_permission.py deleted file mode 100644 index deddb7ccf..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_group_permission.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.granted_permission import GrantedPermission -from typing import Optional, Set -from typing_extensions import Self - -class UserGroupPermission(BaseModel): - """ - List of user groups - """ # noqa: E501 - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="Name of the user group") - permissions: Optional[List[GrantedPermission]] = Field(default=None, description="Permissions granted to the user group") - __properties: ClassVar[List[str]] = ["id", "name", "permissions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserGroupPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserGroupPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name"), - "permissions": [GrantedPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_data_source_permission_assignment.py b/gooddata-api-client/gooddata_api_client/models/user_management_data_source_permission_assignment.py deleted file mode 100644 index febf65c0b..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_data_source_permission_assignment.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementDataSourcePermissionAssignment(BaseModel): - """ - Datasource permission assignments for users and userGroups - """ # noqa: E501 - id: StrictStr = Field(description="Id of the datasource") - name: Optional[StrictStr] = Field(default=None, description="Name of the datasource") - permissions: List[StrictStr] - __properties: ClassVar[List[str]] = ["id", "name", "permissions"] - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['MANAGE', 'USE']): - raise ValueError("each list item must be one of ('MANAGE', 'USE')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementDataSourcePermissionAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "name", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementDataSourcePermissionAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name"), - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_permission_assignments.py b/gooddata-api-client/gooddata_api_client/models/user_management_permission_assignments.py deleted file mode 100644 index 2d7adb2d6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_permission_assignments.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.user_management_data_source_permission_assignment import UserManagementDataSourcePermissionAssignment -from gooddata_api_client.models.user_management_workspace_permission_assignment import UserManagementWorkspacePermissionAssignment -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementPermissionAssignments(BaseModel): - """ - UserManagementPermissionAssignments - """ # noqa: E501 - data_sources: List[UserManagementDataSourcePermissionAssignment] = Field(alias="dataSources") - workspaces: List[UserManagementWorkspacePermissionAssignment] - __properties: ClassVar[List[str]] = ["dataSources", "workspaces"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementPermissionAssignments from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data_sources (list) - _items = [] - if self.data_sources: - for _item_data_sources in self.data_sources: - if _item_data_sources: - _items.append(_item_data_sources.to_dict()) - _dict['dataSources'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspaces (list) - _items = [] - if self.workspaces: - for _item_workspaces in self.workspaces: - if _item_workspaces: - _items.append(_item_workspaces.to_dict()) - _dict['workspaces'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementPermissionAssignments from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSources": [UserManagementDataSourcePermissionAssignment.from_dict(_item) for _item in obj["dataSources"]] if obj.get("dataSources") is not None else None, - "workspaces": [UserManagementWorkspacePermissionAssignment.from_dict(_item) for _item in obj["workspaces"]] if obj.get("workspaces") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_user_group_member.py b/gooddata-api-client/gooddata_api_client/models/user_management_user_group_member.py deleted file mode 100644 index 43d783065..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_user_group_member.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementUserGroupMember(BaseModel): - """ - UserManagementUserGroupMember - """ # noqa: E501 - id: StrictStr - name: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementUserGroupMember from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "name", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementUserGroupMember from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_user_group_members.py b/gooddata-api-client/gooddata_api_client/models/user_management_user_group_members.py deleted file mode 100644 index 7607430ca..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_user_group_members.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.user_management_user_group_member import UserManagementUserGroupMember -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementUserGroupMembers(BaseModel): - """ - UserManagementUserGroupMembers - """ # noqa: E501 - members: List[UserManagementUserGroupMember] - __properties: ClassVar[List[str]] = ["members"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementUserGroupMembers from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in members (list) - _items = [] - if self.members: - for _item_members in self.members: - if _item_members: - _items.append(_item_members.to_dict()) - _dict['members'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementUserGroupMembers from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "members": [UserManagementUserGroupMember.from_dict(_item) for _item in obj["members"]] if obj.get("members") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_user_groups.py b/gooddata-api-client/gooddata_api_client/models/user_management_user_groups.py deleted file mode 100644 index a93e871a4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_user_groups.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.user_management_user_groups_item import UserManagementUserGroupsItem -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementUserGroups(BaseModel): - """ - UserManagementUserGroups - """ # noqa: E501 - total_count: StrictInt = Field(description="Total number of groups", alias="totalCount") - user_groups: List[UserManagementUserGroupsItem] = Field(alias="userGroups") - __properties: ClassVar[List[str]] = ["totalCount", "userGroups"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementUserGroups from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementUserGroups from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "totalCount": obj.get("totalCount"), - "userGroups": [UserManagementUserGroupsItem.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_user_groups_item.py b/gooddata-api-client/gooddata_api_client/models/user_management_user_groups_item.py deleted file mode 100644 index e4abb9da1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_user_groups_item.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.user_management_data_source_permission_assignment import UserManagementDataSourcePermissionAssignment -from gooddata_api_client.models.user_management_workspace_permission_assignment import UserManagementWorkspacePermissionAssignment -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementUserGroupsItem(BaseModel): - """ - List of groups - """ # noqa: E501 - data_sources: List[UserManagementDataSourcePermissionAssignment] = Field(alias="dataSources") - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="Group name") - organization_admin: StrictBool = Field(description="Is group organization admin", alias="organizationAdmin") - user_count: StrictInt = Field(description="The number of users belonging to the group", alias="userCount") - workspaces: List[UserManagementWorkspacePermissionAssignment] - __properties: ClassVar[List[str]] = ["dataSources", "id", "name", "organizationAdmin", "userCount", "workspaces"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementUserGroupsItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data_sources (list) - _items = [] - if self.data_sources: - for _item_data_sources in self.data_sources: - if _item_data_sources: - _items.append(_item_data_sources.to_dict()) - _dict['dataSources'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspaces (list) - _items = [] - if self.workspaces: - for _item_workspaces in self.workspaces: - if _item_workspaces: - _items.append(_item_workspaces.to_dict()) - _dict['workspaces'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementUserGroupsItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSources": [UserManagementDataSourcePermissionAssignment.from_dict(_item) for _item in obj["dataSources"]] if obj.get("dataSources") is not None else None, - "id": obj.get("id"), - "name": obj.get("name"), - "organizationAdmin": obj.get("organizationAdmin"), - "userCount": obj.get("userCount"), - "workspaces": [UserManagementWorkspacePermissionAssignment.from_dict(_item) for _item in obj["workspaces"]] if obj.get("workspaces") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_users.py b/gooddata-api-client/gooddata_api_client/models/user_management_users.py deleted file mode 100644 index 690dee6dc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_users.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.user_management_users_item import UserManagementUsersItem -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementUsers(BaseModel): - """ - UserManagementUsers - """ # noqa: E501 - total_count: StrictInt = Field(description="The total number of users is based on applied filters.", alias="totalCount") - users: List[UserManagementUsersItem] - __properties: ClassVar[List[str]] = ["totalCount", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementUsers from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementUsers from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "totalCount": obj.get("totalCount"), - "users": [UserManagementUsersItem.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_users_item.py b/gooddata-api-client/gooddata_api_client/models/user_management_users_item.py deleted file mode 100644 index 915e71b47..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_users_item.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.user_group_identifier import UserGroupIdentifier -from gooddata_api_client.models.user_management_data_source_permission_assignment import UserManagementDataSourcePermissionAssignment -from gooddata_api_client.models.user_management_workspace_permission_assignment import UserManagementWorkspacePermissionAssignment -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementUsersItem(BaseModel): - """ - List of users - """ # noqa: E501 - data_sources: List[UserManagementDataSourcePermissionAssignment] = Field(alias="dataSources") - email: Optional[StrictStr] = Field(default=None, description="User email address") - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="User name") - organization_admin: StrictBool = Field(description="Is user organization admin", alias="organizationAdmin") - user_groups: List[UserGroupIdentifier] = Field(alias="userGroups") - workspaces: List[UserManagementWorkspacePermissionAssignment] - __properties: ClassVar[List[str]] = ["dataSources", "email", "id", "name", "organizationAdmin", "userGroups", "workspaces"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementUsersItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in data_sources (list) - _items = [] - if self.data_sources: - for _item_data_sources in self.data_sources: - if _item_data_sources: - _items.append(_item_data_sources.to_dict()) - _dict['dataSources'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in workspaces (list) - _items = [] - if self.workspaces: - for _item_workspaces in self.workspaces: - if _item_workspaces: - _items.append(_item_workspaces.to_dict()) - _dict['workspaces'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementUsersItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dataSources": [UserManagementDataSourcePermissionAssignment.from_dict(_item) for _item in obj["dataSources"]] if obj.get("dataSources") is not None else None, - "email": obj.get("email"), - "id": obj.get("id"), - "name": obj.get("name"), - "organizationAdmin": obj.get("organizationAdmin"), - "userGroups": [UserGroupIdentifier.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None, - "workspaces": [UserManagementWorkspacePermissionAssignment.from_dict(_item) for _item in obj["workspaces"]] if obj.get("workspaces") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_management_workspace_permission_assignment.py b/gooddata-api-client/gooddata_api_client/models/user_management_workspace_permission_assignment.py deleted file mode 100644 index e561b76a9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_management_workspace_permission_assignment.py +++ /dev/null @@ -1,112 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class UserManagementWorkspacePermissionAssignment(BaseModel): - """ - Workspace permission assignments for users and userGroups - """ # noqa: E501 - hierarchy_permissions: List[StrictStr] = Field(alias="hierarchyPermissions") - id: StrictStr - name: Optional[StrictStr] = None - permissions: List[StrictStr] - __properties: ClassVar[List[str]] = ["hierarchyPermissions", "id", "name", "permissions"] - - @field_validator('hierarchy_permissions') - def hierarchy_permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - raise ValueError("each list item must be one of ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - raise ValueError("each list item must be one of ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserManagementWorkspacePermissionAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "name", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserManagementWorkspacePermissionAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "hierarchyPermissions": obj.get("hierarchyPermissions"), - "id": obj.get("id"), - "name": obj.get("name"), - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/user_permission.py b/gooddata-api-client/gooddata_api_client/models/user_permission.py deleted file mode 100644 index e404a0088..000000000 --- a/gooddata-api-client/gooddata_api_client/models/user_permission.py +++ /dev/null @@ -1,102 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.granted_permission import GrantedPermission -from typing import Optional, Set -from typing_extensions import Self - -class UserPermission(BaseModel): - """ - List of users - """ # noqa: E501 - email: Optional[StrictStr] = Field(default=None, description="User email address") - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="Name of user") - permissions: Optional[List[GrantedPermission]] = Field(default=None, description="Permissions granted to the user") - __properties: ClassVar[List[str]] = ["email", "id", "name", "permissions"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of UserPermission from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in permissions (list) - _items = [] - if self.permissions: - for _item_permissions in self.permissions: - if _item_permissions: - _items.append(_item_permissions.to_dict()) - _dict['permissions'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of UserPermission from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email"), - "id": obj.get("id"), - "name": obj.get("name"), - "permissions": [GrantedPermission.from_dict(_item) for _item in obj["permissions"]] if obj.get("permissions") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/validate_by_item.py b/gooddata-api-client/gooddata_api_client/models/validate_by_item.py deleted file mode 100644 index 96416fc3f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/validate_by_item.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class ValidateByItem(BaseModel): - """ - ValidateByItem - """ # noqa: E501 - id: StrictStr = Field(description="Specifies entity used for valid elements computation.") - type: Annotated[str, Field(strict=True)] = Field(description="Specifies entity type which could be label, attribute, fact, or metric.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('type') - def type_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(label)|(attribute)|(fact)|(metric)$", value): - raise ValueError(r"must validate the regular expression /^(label)|(attribute)|(fact)|(metric)$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ValidateByItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ValidateByItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_by_id_request.py b/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_by_id_request.py deleted file mode 100644 index 218c13de1..000000000 --- a/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_by_id_request.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ValidateLLMEndpointByIdRequest(BaseModel): - """ - ValidateLLMEndpointByIdRequest - """ # noqa: E501 - base_url: Optional[StrictStr] = Field(default=None, description="Base URL for the LLM endpoint validation", alias="baseUrl") - llm_model: Optional[StrictStr] = Field(default=None, description="LLM model for the LLM endpoint validation", alias="llmModel") - llm_organization: Optional[StrictStr] = Field(default=None, description="Organization name for the LLM endpoint validation", alias="llmOrganization") - provider: Optional[StrictStr] = Field(default=None, description="Provider for the LLM endpoint validation") - token: Optional[StrictStr] = Field(default=None, description="Token for the LLM endpoint validation") - __properties: ClassVar[List[str]] = ["baseUrl", "llmModel", "llmOrganization", "provider", "token"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ValidateLLMEndpointByIdRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ValidateLLMEndpointByIdRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "baseUrl": obj.get("baseUrl"), - "llmModel": obj.get("llmModel"), - "llmOrganization": obj.get("llmOrganization"), - "provider": obj.get("provider"), - "token": obj.get("token") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_request.py b/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_request.py deleted file mode 100644 index a656535b6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_request.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class ValidateLLMEndpointRequest(BaseModel): - """ - ValidateLLMEndpointRequest - """ # noqa: E501 - base_url: Optional[StrictStr] = Field(default=None, description="Base URL for the LLM endpoint validation", alias="baseUrl") - llm_model: Optional[StrictStr] = Field(default=None, description="LLM model for the LLM endpoint validation", alias="llmModel") - llm_organization: Optional[StrictStr] = Field(default=None, description="Organization name for the LLM endpoint validation", alias="llmOrganization") - provider: StrictStr = Field(description="Provider for the LLM endpoint validation") - token: StrictStr = Field(description="Token for the LLM endpoint validation") - __properties: ClassVar[List[str]] = ["baseUrl", "llmModel", "llmOrganization", "provider", "token"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ValidateLLMEndpointRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ValidateLLMEndpointRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "baseUrl": obj.get("baseUrl"), - "llmModel": obj.get("llmModel"), - "llmOrganization": obj.get("llmOrganization"), - "provider": obj.get("provider"), - "token": obj.get("token") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_response.py b/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_response.py deleted file mode 100644 index 7a0ebc9df..000000000 --- a/gooddata-api-client/gooddata_api_client/models/validate_llm_endpoint_response.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class ValidateLLMEndpointResponse(BaseModel): - """ - ValidateLLMEndpointResponse - """ # noqa: E501 - message: StrictStr = Field(description="Additional message about the LLM endpoint validation") - successful: StrictBool = Field(description="Whether the LLM endpoint validation was successful") - __properties: ClassVar[List[str]] = ["message", "successful"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ValidateLLMEndpointResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ValidateLLMEndpointResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "message": obj.get("message"), - "successful": obj.get("successful") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/value.py b/gooddata-api-client/gooddata_api_client/models/value.py deleted file mode 100644 index a97dc6bd2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/value.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt -from typing import Any, ClassVar, Dict, List, Union -from typing import Optional, Set -from typing_extensions import Self - -class Value(BaseModel): - """ - Value - """ # noqa: E501 - value: Union[StrictFloat, StrictInt] = Field(description="Value of the alert threshold to compare the metric to.") - __properties: ClassVar[List[str]] = ["value"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Value from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Value from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "value": obj.get("value") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/visible_filter.py b/gooddata-api-client/gooddata_api_client/models/visible_filter.py deleted file mode 100644 index c9bd80257..000000000 --- a/gooddata-api-client/gooddata_api_client/models/visible_filter.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class VisibleFilter(BaseModel): - """ - VisibleFilter - """ # noqa: E501 - is_all_time_date_filter: Optional[StrictBool] = Field(default=False, description="Indicates if the filter is an all-time date filter. Such a filter is not included in report computation, so there is no filter with the same 'localIdentifier' to be found. In such cases, this flag is used to inform the server to not search for the filter in the definitions and include it anyways.", alias="isAllTimeDateFilter") - local_identifier: Optional[StrictStr] = Field(default=None, alias="localIdentifier") - title: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["isAllTimeDateFilter", "localIdentifier", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of VisibleFilter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of VisibleFilter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "isAllTimeDateFilter": obj.get("isAllTimeDateFilter") if obj.get("isAllTimeDateFilter") is not None else False, - "localIdentifier": obj.get("localIdentifier"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/visual_export_request.py b/gooddata-api-client/gooddata_api_client/models/visual_export_request.py deleted file mode 100644 index 5f04c980e..000000000 --- a/gooddata-api-client/gooddata_api_client/models/visual_export_request.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class VisualExportRequest(BaseModel): - """ - Export request object describing the export properties and metadata for dashboard PDF exports. - """ # noqa: E501 - dashboard_id: StrictStr = Field(description="Dashboard identifier", alias="dashboardId") - file_name: StrictStr = Field(description="File name to be used for retrieving the pdf document.", alias="fileName") - metadata: Optional[Dict[str, Any]] = Field(default=None, description="Metadata definition in free-form JSON format.") - __properties: ClassVar[List[str]] = ["dashboardId", "fileName", "metadata"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of VisualExportRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of VisualExportRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardId": obj.get("dashboardId"), - "fileName": obj.get("fileName"), - "metadata": obj.get("metadata") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/visualization_config.py b/gooddata-api-client/gooddata_api_client/models/visualization_config.py deleted file mode 100644 index 9e25ca6a5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/visualization_config.py +++ /dev/null @@ -1,110 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.anomaly_detection_config import AnomalyDetectionConfig -from gooddata_api_client.models.clustering_config import ClusteringConfig -from gooddata_api_client.models.forecast_config import ForecastConfig -from gooddata_api_client.models.what_if_scenario_config import WhatIfScenarioConfig -from typing import Optional, Set -from typing_extensions import Self - -class VisualizationConfig(BaseModel): - """ - Visualization config for smart-function rendering. - """ # noqa: E501 - anomaly_detection: Optional[AnomalyDetectionConfig] = Field(default=None, alias="anomalyDetection") - clustering: Optional[ClusteringConfig] = None - forecast: Optional[ForecastConfig] = None - what_if: Optional[WhatIfScenarioConfig] = Field(default=None, alias="whatIf") - __properties: ClassVar[List[str]] = ["anomalyDetection", "clustering", "forecast", "whatIf"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of VisualizationConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of anomaly_detection - if self.anomaly_detection: - _dict['anomalyDetection'] = self.anomaly_detection.to_dict() - # override the default output from pydantic by calling `to_dict()` of clustering - if self.clustering: - _dict['clustering'] = self.clustering.to_dict() - # override the default output from pydantic by calling `to_dict()` of forecast - if self.forecast: - _dict['forecast'] = self.forecast.to_dict() - # override the default output from pydantic by calling `to_dict()` of what_if - if self.what_if: - _dict['whatIf'] = self.what_if.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of VisualizationConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "anomalyDetection": AnomalyDetectionConfig.from_dict(obj["anomalyDetection"]) if obj.get("anomalyDetection") is not None else None, - "clustering": ClusteringConfig.from_dict(obj["clustering"]) if obj.get("clustering") is not None else None, - "forecast": ForecastConfig.from_dict(obj["forecast"]) if obj.get("forecast") is not None else None, - "whatIf": WhatIfScenarioConfig.from_dict(obj["whatIf"]) if obj.get("whatIf") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/webhook.py b/gooddata-api-client/gooddata_api_client/models/webhook.py deleted file mode 100644 index 165ae6e78..000000000 --- a/gooddata-api-client/gooddata_api_client/models/webhook.py +++ /dev/null @@ -1,141 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class Webhook(BaseModel): - """ - Webhook destination for notifications. The property url is required on create and update. - """ # noqa: E501 - has_secret_key: Optional[StrictBool] = Field(default=None, description="Flag indicating if webhook has a hmac secret key.", alias="hasSecretKey") - has_token: Optional[StrictBool] = Field(default=None, description="Flag indicating if webhook has a token.", alias="hasToken") - secret_key: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Hmac secret key for the webhook signature.", alias="secretKey") - token: Optional[Annotated[str, Field(strict=True, max_length=10000)]] = Field(default=None, description="Bearer token for the webhook.") - type: StrictStr = Field(description="The destination type.") - url: Optional[Annotated[str, Field(strict=True, max_length=255)]] = Field(default=None, description="The webhook URL.") - __properties: ClassVar[List[str]] = ["hasSecretKey", "hasToken", "secretKey", "token", "type", "url"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['WEBHOOK']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('WEBHOOK')") - return value - - @field_validator('url') - def url_validate_regular_expression(cls, value): - """Validates the regular expression""" - if value is None: - return value - - if not re.match(r"https?\:\/\/.*", value): - raise ValueError(r"must validate the regular expression /https?\:\/\/.*/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Webhook from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - * OpenAPI `readOnly` fields are excluded. - * OpenAPI `readOnly` fields are excluded. - """ - excluded_fields: Set[str] = set([ - "has_secret_key", - "has_token", - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # set to None if has_secret_key (nullable) is None - # and model_fields_set contains the field - if self.has_secret_key is None and "has_secret_key" in self.model_fields_set: - _dict['hasSecretKey'] = None - - # set to None if has_token (nullable) is None - # and model_fields_set contains the field - if self.has_token is None and "has_token" in self.model_fields_set: - _dict['hasToken'] = None - - # set to None if secret_key (nullable) is None - # and model_fields_set contains the field - if self.secret_key is None and "secret_key" in self.model_fields_set: - _dict['secretKey'] = None - - # set to None if token (nullable) is None - # and model_fields_set contains the field - if self.token is None and "token" in self.model_fields_set: - _dict['token'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Webhook from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "hasSecretKey": obj.get("hasSecretKey"), - "hasToken": obj.get("hasToken"), - "secretKey": obj.get("secretKey"), - "token": obj.get("token"), - "type": obj.get("type"), - "url": obj.get("url") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/webhook_automation_info.py b/gooddata-api-client/gooddata_api_client/models/webhook_automation_info.py deleted file mode 100644 index 07fa14cfc..000000000 --- a/gooddata-api-client/gooddata_api_client/models/webhook_automation_info.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class WebhookAutomationInfo(BaseModel): - """ - WebhookAutomationInfo - """ # noqa: E501 - dashboard_title: Optional[StrictStr] = Field(default=None, alias="dashboardTitle") - dashboard_url: StrictStr = Field(alias="dashboardURL") - id: StrictStr - is_custom_dashboard_url: StrictBool = Field(alias="isCustomDashboardURL") - title: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["dashboardTitle", "dashboardURL", "id", "isCustomDashboardURL", "title"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WebhookAutomationInfo from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WebhookAutomationInfo from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "dashboardTitle": obj.get("dashboardTitle"), - "dashboardURL": obj.get("dashboardURL"), - "id": obj.get("id"), - "isCustomDashboardURL": obj.get("isCustomDashboardURL"), - "title": obj.get("title") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/webhook_message.py b/gooddata-api-client/gooddata_api_client/models/webhook_message.py deleted file mode 100644 index 80b52a2e2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/webhook_message.py +++ /dev/null @@ -1,105 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from datetime import datetime -from pydantic import BaseModel, ConfigDict, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.webhook_message_data import WebhookMessageData -from typing import Optional, Set -from typing_extensions import Self - -class WebhookMessage(BaseModel): - """ - WebhookMessage - """ # noqa: E501 - data: WebhookMessageData - timestamp: datetime - type: StrictStr - __properties: ClassVar[List[str]] = ["data", "timestamp", "type"] - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['automation-task.completed', 'automation-task.limit-exceeded']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('automation-task.completed', 'automation-task.limit-exceeded')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WebhookMessage from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of data - if self.data: - _dict['data'] = self.data.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WebhookMessage from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "data": WebhookMessageData.from_dict(obj["data"]) if obj.get("data") is not None else None, - "timestamp": obj.get("timestamp"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/webhook_message_data.py b/gooddata-api-client/gooddata_api_client/models/webhook_message_data.py deleted file mode 100644 index 44971edd7..000000000 --- a/gooddata-api-client/gooddata_api_client/models/webhook_message_data.py +++ /dev/null @@ -1,179 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.alert_description import AlertDescription -from gooddata_api_client.models.export_result import ExportResult -from gooddata_api_client.models.notification_filter import NotificationFilter -from gooddata_api_client.models.webhook_automation_info import WebhookAutomationInfo -from gooddata_api_client.models.webhook_recipient import WebhookRecipient -from typing import Optional, Set -from typing_extensions import Self - -class WebhookMessageData(BaseModel): - """ - WebhookMessageData - """ # noqa: E501 - alert: Optional[AlertDescription] = None - automation: WebhookAutomationInfo - dashboard_tabular_exports: Optional[List[ExportResult]] = Field(default=None, alias="dashboardTabularExports") - details: Optional[Dict[str, StrictStr]] = None - filters: Optional[List[NotificationFilter]] = None - image_exports: Optional[List[ExportResult]] = Field(default=None, alias="imageExports") - notification_source: Optional[StrictStr] = Field(default=None, alias="notificationSource") - raw_exports: Optional[List[ExportResult]] = Field(default=None, alias="rawExports") - recipients: Optional[List[WebhookRecipient]] = None - remaining_action_count: Optional[StrictInt] = Field(default=None, alias="remainingActionCount") - slides_exports: Optional[List[ExportResult]] = Field(default=None, alias="slidesExports") - tabular_exports: Optional[List[ExportResult]] = Field(default=None, alias="tabularExports") - visual_exports: Optional[List[ExportResult]] = Field(default=None, alias="visualExports") - __properties: ClassVar[List[str]] = ["alert", "automation", "dashboardTabularExports", "details", "filters", "imageExports", "notificationSource", "rawExports", "recipients", "remainingActionCount", "slidesExports", "tabularExports", "visualExports"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WebhookMessageData from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of alert - if self.alert: - _dict['alert'] = self.alert.to_dict() - # override the default output from pydantic by calling `to_dict()` of automation - if self.automation: - _dict['automation'] = self.automation.to_dict() - # override the default output from pydantic by calling `to_dict()` of each item in dashboard_tabular_exports (list) - _items = [] - if self.dashboard_tabular_exports: - for _item_dashboard_tabular_exports in self.dashboard_tabular_exports: - if _item_dashboard_tabular_exports: - _items.append(_item_dashboard_tabular_exports.to_dict()) - _dict['dashboardTabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in filters (list) - _items = [] - if self.filters: - for _item_filters in self.filters: - if _item_filters: - _items.append(_item_filters.to_dict()) - _dict['filters'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in image_exports (list) - _items = [] - if self.image_exports: - for _item_image_exports in self.image_exports: - if _item_image_exports: - _items.append(_item_image_exports.to_dict()) - _dict['imageExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in raw_exports (list) - _items = [] - if self.raw_exports: - for _item_raw_exports in self.raw_exports: - if _item_raw_exports: - _items.append(_item_raw_exports.to_dict()) - _dict['rawExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in recipients (list) - _items = [] - if self.recipients: - for _item_recipients in self.recipients: - if _item_recipients: - _items.append(_item_recipients.to_dict()) - _dict['recipients'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in slides_exports (list) - _items = [] - if self.slides_exports: - for _item_slides_exports in self.slides_exports: - if _item_slides_exports: - _items.append(_item_slides_exports.to_dict()) - _dict['slidesExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in tabular_exports (list) - _items = [] - if self.tabular_exports: - for _item_tabular_exports in self.tabular_exports: - if _item_tabular_exports: - _items.append(_item_tabular_exports.to_dict()) - _dict['tabularExports'] = _items - # override the default output from pydantic by calling `to_dict()` of each item in visual_exports (list) - _items = [] - if self.visual_exports: - for _item_visual_exports in self.visual_exports: - if _item_visual_exports: - _items.append(_item_visual_exports.to_dict()) - _dict['visualExports'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WebhookMessageData from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "alert": AlertDescription.from_dict(obj["alert"]) if obj.get("alert") is not None else None, - "automation": WebhookAutomationInfo.from_dict(obj["automation"]) if obj.get("automation") is not None else None, - "dashboardTabularExports": [ExportResult.from_dict(_item) for _item in obj["dashboardTabularExports"]] if obj.get("dashboardTabularExports") is not None else None, - "details": obj.get("details"), - "filters": [NotificationFilter.from_dict(_item) for _item in obj["filters"]] if obj.get("filters") is not None else None, - "imageExports": [ExportResult.from_dict(_item) for _item in obj["imageExports"]] if obj.get("imageExports") is not None else None, - "notificationSource": obj.get("notificationSource"), - "rawExports": [ExportResult.from_dict(_item) for _item in obj["rawExports"]] if obj.get("rawExports") is not None else None, - "recipients": [WebhookRecipient.from_dict(_item) for _item in obj["recipients"]] if obj.get("recipients") is not None else None, - "remainingActionCount": obj.get("remainingActionCount"), - "slidesExports": [ExportResult.from_dict(_item) for _item in obj["slidesExports"]] if obj.get("slidesExports") is not None else None, - "tabularExports": [ExportResult.from_dict(_item) for _item in obj["tabularExports"]] if obj.get("tabularExports") is not None else None, - "visualExports": [ExportResult.from_dict(_item) for _item in obj["visualExports"]] if obj.get("visualExports") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/webhook_recipient.py b/gooddata-api-client/gooddata_api_client/models/webhook_recipient.py deleted file mode 100644 index c28c8a7b6..000000000 --- a/gooddata-api-client/gooddata_api_client/models/webhook_recipient.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class WebhookRecipient(BaseModel): - """ - WebhookRecipient - """ # noqa: E501 - email: StrictStr - id: StrictStr - __properties: ClassVar[List[str]] = ["email", "id"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WebhookRecipient from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WebhookRecipient from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email"), - "id": obj.get("id") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/what_if_measure_adjustment_config.py b/gooddata-api-client/gooddata_api_client/models/what_if_measure_adjustment_config.py deleted file mode 100644 index f554b46b5..000000000 --- a/gooddata-api-client/gooddata_api_client/models/what_if_measure_adjustment_config.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class WhatIfMeasureAdjustmentConfig(BaseModel): - """ - Measure adjustments for this scenario - """ # noqa: E501 - metric_id: StrictStr = Field(description="ID of the metric or fact to adjust", alias="metricId") - metric_type: StrictStr = Field(description="Type: metric or fact", alias="metricType") - scenario_maql: StrictStr = Field(description="Alternative MAQL expression for this scenario", alias="scenarioMaql") - __properties: ClassVar[List[str]] = ["metricId", "metricType", "scenarioMaql"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WhatIfMeasureAdjustmentConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WhatIfMeasureAdjustmentConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "metricId": obj.get("metricId"), - "metricType": obj.get("metricType"), - "scenarioMaql": obj.get("scenarioMaql") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/what_if_scenario_config.py b/gooddata-api-client/gooddata_api_client/models/what_if_scenario_config.py deleted file mode 100644 index 798d770ee..000000000 --- a/gooddata-api-client/gooddata_api_client/models/what_if_scenario_config.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictBool -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.what_if_scenario_item import WhatIfScenarioItem -from typing import Optional, Set -from typing_extensions import Self - -class WhatIfScenarioConfig(BaseModel): - """ - What-if scenario configuration. - """ # noqa: E501 - include_baseline: StrictBool = Field(description="Whether baseline (unmodified) values are included", alias="includeBaseline") - scenarios: List[WhatIfScenarioItem] = Field(description="Scenarios with alternative measure calculations") - __properties: ClassVar[List[str]] = ["includeBaseline", "scenarios"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WhatIfScenarioConfig from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in scenarios (list) - _items = [] - if self.scenarios: - for _item_scenarios in self.scenarios: - if _item_scenarios: - _items.append(_item_scenarios.to_dict()) - _dict['scenarios'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WhatIfScenarioConfig from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "includeBaseline": obj.get("includeBaseline"), - "scenarios": [WhatIfScenarioItem.from_dict(_item) for _item in obj["scenarios"]] if obj.get("scenarios") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/what_if_scenario_item.py b/gooddata-api-client/gooddata_api_client/models/what_if_scenario_item.py deleted file mode 100644 index a1e995dd4..000000000 --- a/gooddata-api-client/gooddata_api_client/models/what_if_scenario_item.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.what_if_measure_adjustment_config import WhatIfMeasureAdjustmentConfig -from typing import Optional, Set -from typing_extensions import Self - -class WhatIfScenarioItem(BaseModel): - """ - Scenarios with alternative measure calculations - """ # noqa: E501 - adjustments: List[WhatIfMeasureAdjustmentConfig] = Field(description="Measure adjustments for this scenario") - label: StrictStr = Field(description="Human-readable scenario label") - __properties: ClassVar[List[str]] = ["adjustments", "label"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WhatIfScenarioItem from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in adjustments (list) - _items = [] - if self.adjustments: - for _item_adjustments in self.adjustments: - if _item_adjustments: - _items.append(_item_adjustments.to_dict()) - _dict['adjustments'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WhatIfScenarioItem from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "adjustments": [WhatIfMeasureAdjustmentConfig.from_dict(_item) for _item in obj["adjustments"]] if obj.get("adjustments") is not None else None, - "label": obj.get("label") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/widget_slides_template.py b/gooddata-api-client/gooddata_api_client/models/widget_slides_template.py deleted file mode 100644 index 90d6de280..000000000 --- a/gooddata-api-client/gooddata_api_client/models/widget_slides_template.py +++ /dev/null @@ -1,108 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from typing_extensions import Annotated -from gooddata_api_client.models.content_slide_template import ContentSlideTemplate -from typing import Optional, Set -from typing_extensions import Self - -class WidgetSlidesTemplate(BaseModel): - """ - Template for widget slides export. Available variables: {{currentPageNumber}}, {{dashboardDateFilters}}, {{dashboardDescription}}, {{dashboardFilters}}, {{dashboardId}}, {{dashboardName}}, {{dashboardTags}}, {{dashboardUrl}}, {{exportedAt}}, {{exportedBy}}, {{logo}}, {{totalPages}}, {{workspaceId}}, {{workspaceName}} - """ # noqa: E501 - applied_on: Annotated[List[StrictStr], Field(min_length=1)] = Field(description="Export types this template applies to.", alias="appliedOn") - content_slide: Optional[ContentSlideTemplate] = Field(default=None, alias="contentSlide") - __properties: ClassVar[List[str]] = ["appliedOn", "contentSlide"] - - @field_validator('applied_on') - def applied_on_validate_enum(cls, value): - """Validates the enum""" - for i in value: - if i not in set(['PDF', 'PPTX']): - raise ValueError("each list item must be one of ('PDF', 'PPTX')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WidgetSlidesTemplate from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of content_slide - if self.content_slide: - _dict['contentSlide'] = self.content_slide.to_dict() - # set to None if content_slide (nullable) is None - # and model_fields_set contains the field - if self.content_slide is None and "content_slide" in self.model_fields_set: - _dict['contentSlide'] = None - - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WidgetSlidesTemplate from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "appliedOn": obj.get("appliedOn"), - "contentSlide": ContentSlideTemplate.from_dict(obj["contentSlide"]) if obj.get("contentSlide") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_automation_identifier.py b/gooddata-api-client/gooddata_api_client/models/workspace_automation_identifier.py deleted file mode 100644 index 1dd79a496..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_automation_identifier.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, StrictStr -from typing import Any, ClassVar, Dict, List -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceAutomationIdentifier(BaseModel): - """ - WorkspaceAutomationIdentifier - """ # noqa: E501 - id: StrictStr - __properties: ClassVar[List[str]] = ["id"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceAutomationIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceAutomationIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_automation_management_bulk_request.py b/gooddata-api-client/gooddata_api_client/models/workspace_automation_management_bulk_request.py deleted file mode 100644 index 02d7281a0..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_automation_management_bulk_request.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.workspace_automation_identifier import WorkspaceAutomationIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceAutomationManagementBulkRequest(BaseModel): - """ - WorkspaceAutomationManagementBulkRequest - """ # noqa: E501 - automations: List[WorkspaceAutomationIdentifier] - __properties: ClassVar[List[str]] = ["automations"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceAutomationManagementBulkRequest from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in automations (list) - _items = [] - if self.automations: - for _item_automations in self.automations: - if _item_automations: - _items.append(_item_automations.to_dict()) - _dict['automations'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceAutomationManagementBulkRequest from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "automations": [WorkspaceAutomationIdentifier.from_dict(_item) for _item in obj["automations"]] if obj.get("automations") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_data_source.py b/gooddata-api-client/gooddata_api_client/models/workspace_data_source.py deleted file mode 100644 index 2835ffa9a..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_data_source.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceDataSource(BaseModel): - """ - The data source used for the particular workspace instead of the one defined in the LDM inherited from its parent workspace. Such data source cannot be defined for a single or a top-parent workspace. - """ # noqa: E501 - id: StrictStr = Field(description="The ID of the used data source.") - schema_path: Optional[List[StrictStr]] = Field(default=None, description="The full schema path as array of its path parts. Will be rendered as subPath1.subPath2...", alias="schemaPath") - __properties: ClassVar[List[str]] = ["id", "schemaPath"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceDataSource from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceDataSource from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "schemaPath": obj.get("schemaPath") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_identifier.py b/gooddata-api-client/gooddata_api_client/models/workspace_identifier.py deleted file mode 100644 index 38bdb8f1f..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_identifier.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List -from typing_extensions import Annotated -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceIdentifier(BaseModel): - """ - A workspace identifier. - """ # noqa: E501 - id: Annotated[str, Field(strict=True)] = Field(description="Identifier of the workspace.") - type: StrictStr = Field(description="A type.") - __properties: ClassVar[List[str]] = ["id", "type"] - - @field_validator('id') - def id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^(?!\.)[.A-Za-z0-9_-]{1,255}$", value): - raise ValueError(r"must validate the regular expression /^(?!\.)[.A-Za-z0-9_-]{1,255}$/") - return value - - @field_validator('type') - def type_validate_enum(cls, value): - """Validates the enum""" - if value not in set(['workspace']): - # Accept unknown enum values for forward/backward compatibility - return value # raise ValueError("must be one of enum values ('workspace')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceIdentifier from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceIdentifier from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "type": obj.get("type") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_permission_assignment.py b/gooddata-api-client/gooddata_api_client/models/workspace_permission_assignment.py deleted file mode 100644 index 7809c8701..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_permission_assignment.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.assignee_identifier import AssigneeIdentifier -from typing import Optional, Set -from typing_extensions import Self - -class WorkspacePermissionAssignment(BaseModel): - """ - Workspace permission assignments - """ # noqa: E501 - assignee_identifier: AssigneeIdentifier = Field(alias="assigneeIdentifier") - hierarchy_permissions: Optional[List[StrictStr]] = Field(default=None, alias="hierarchyPermissions") - permissions: Optional[List[StrictStr]] = None - __properties: ClassVar[List[str]] = ["assigneeIdentifier", "hierarchyPermissions", "permissions"] - - @field_validator('hierarchy_permissions') - def hierarchy_permissions_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - raise ValueError("each list item must be one of ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - @field_validator('permissions') - def permissions_validate_enum(cls, value): - """Validates the enum""" - if value is None: - return value - - for i in value: - if i not in set(['MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW']): - raise ValueError("each list item must be one of ('MANAGE', 'ANALYZE', 'EXPORT', 'EXPORT_TABULAR', 'EXPORT_PDF', 'CREATE_AUTOMATION', 'USE_AI_ASSISTANT', 'WRITE_KNOWLEDGE_DOCUMENTS', 'READ_KNOWLEDGE_DOCUMENTS', 'CREATE_FILTER_VIEW', 'VIEW')") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspacePermissionAssignment from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of assignee_identifier - if self.assignee_identifier: - _dict['assigneeIdentifier'] = self.assignee_identifier.to_dict() - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspacePermissionAssignment from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "assigneeIdentifier": AssigneeIdentifier.from_dict(obj["assigneeIdentifier"]) if obj.get("assigneeIdentifier") is not None else None, - "hierarchyPermissions": obj.get("hierarchyPermissions"), - "permissions": obj.get("permissions") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_user.py b/gooddata-api-client/gooddata_api_client/models/workspace_user.py deleted file mode 100644 index cf82fbb71..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_user.py +++ /dev/null @@ -1,92 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceUser(BaseModel): - """ - List of workspace users - """ # noqa: E501 - email: Optional[StrictStr] = Field(default=None, description="User email address") - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="User name") - __properties: ClassVar[List[str]] = ["email", "id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceUser from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceUser from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "email": obj.get("email"), - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_user_group.py b/gooddata-api-client/gooddata_api_client/models/workspace_user_group.py deleted file mode 100644 index 8ab1e37ab..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_user_group.py +++ /dev/null @@ -1,90 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceUserGroup(BaseModel): - """ - List of workspace groups - """ # noqa: E501 - id: StrictStr - name: Optional[StrictStr] = Field(default=None, description="Group name") - __properties: ClassVar[List[str]] = ["id", "name"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceUserGroup from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceUserGroup from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "id": obj.get("id"), - "name": obj.get("name") - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_user_groups.py b/gooddata-api-client/gooddata_api_client/models/workspace_user_groups.py deleted file mode 100644 index 4904e1af9..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_user_groups.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.workspace_user_group import WorkspaceUserGroup -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceUserGroups(BaseModel): - """ - WorkspaceUserGroups - """ # noqa: E501 - total_count: StrictInt = Field(description="Total number of groups", alias="totalCount") - user_groups: List[WorkspaceUserGroup] = Field(alias="userGroups") - __properties: ClassVar[List[str]] = ["totalCount", "userGroups"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceUserGroups from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in user_groups (list) - _items = [] - if self.user_groups: - for _item_user_groups in self.user_groups: - if _item_user_groups: - _items.append(_item_user_groups.to_dict()) - _dict['userGroups'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceUserGroups from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "totalCount": obj.get("totalCount"), - "userGroups": [WorkspaceUserGroup.from_dict(_item) for _item in obj["userGroups"]] if obj.get("userGroups") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/workspace_users.py b/gooddata-api-client/gooddata_api_client/models/workspace_users.py deleted file mode 100644 index 83e041377..000000000 --- a/gooddata-api-client/gooddata_api_client/models/workspace_users.py +++ /dev/null @@ -1,98 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictInt -from typing import Any, ClassVar, Dict, List -from gooddata_api_client.models.workspace_user import WorkspaceUser -from typing import Optional, Set -from typing_extensions import Self - -class WorkspaceUsers(BaseModel): - """ - WorkspaceUsers - """ # noqa: E501 - total_count: StrictInt = Field(description="The total number of users is based on applied filters.", alias="totalCount") - users: List[WorkspaceUser] - __properties: ClassVar[List[str]] = ["totalCount", "users"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of WorkspaceUsers from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in users (list) - _items = [] - if self.users: - for _item_users in self.users: - if _item_users: - _items.append(_item_users.to_dict()) - _dict['users'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of WorkspaceUsers from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "totalCount": obj.get("totalCount"), - "users": [WorkspaceUser.from_dict(_item) for _item in obj["users"]] if obj.get("users") is not None else None - }) - return _obj - - diff --git a/gooddata-api-client/gooddata_api_client/models/xliff.py b/gooddata-api-client/gooddata_api_client/models/xliff.py deleted file mode 100644 index bbd481ae2..000000000 --- a/gooddata-api-client/gooddata_api_client/models/xliff.py +++ /dev/null @@ -1,106 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing import Any, ClassVar, Dict, List, Optional -from gooddata_api_client.models.file import File -from typing import Optional, Set -from typing_extensions import Self - -class Xliff(BaseModel): - """ - Xliff - """ # noqa: E501 - file: Optional[List[File]] = None - other_attributes: Optional[Dict[str, StrictStr]] = Field(default=None, alias="otherAttributes") - space: Optional[StrictStr] = None - src_lang: Optional[StrictStr] = Field(default=None, alias="srcLang") - trg_lang: Optional[StrictStr] = Field(default=None, alias="trgLang") - version: Optional[StrictStr] = None - __properties: ClassVar[List[str]] = ["file", "otherAttributes", "space", "srcLang", "trgLang", "version"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of Xliff from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in file (list) - _items = [] - if self.file: - for _item_file in self.file: - if _item_file: - _items.append(_item_file.to_dict()) - _dict['file'] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of Xliff from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "file": [File.from_dict(_item) for _item in obj["file"]] if obj.get("file") is not None else None, - "otherAttributes": obj.get("otherAttributes"), - "space": obj.get("space"), - "srcLang": obj.get("srcLang"), - "trgLang": obj.get("trgLang"), - "version": obj.get("version") - }) - return _obj - - From e7d4834ce133cbdd6fb5764e6aef57e90b00a2be Mon Sep 17 00:00:00 2001 From: Jan Tychtl Date: Wed, 1 Apr 2026 17:20:33 +0200 Subject: [PATCH 2/6] feat: regenerate api-client and add parameters field Regenerate gooddata-api-client from latest staging OpenAPI spec. Add parameters field to CatalogDeclarativeAnalyticsLayer. risk: low --- gooddata-api-client/.openapi-generator/FILES | 26 +- gooddata-api-client/README.md | 22 +- gooddata-api-client/docs/AIApi.md | 62 - gooddata-api-client/docs/ActionsApi.md | 604 +------- ...ntRequestDto.md => AiUsageMetadataItem.md} | 11 +- gooddata-api-client/docs/ChatResult.md | 1 + .../CreateKnowledgeDocumentResponseDto.md | 15 - .../DeleteKnowledgeDocumentResponseDto.md | 13 - .../docs/InsightWidgetDescriptor.md | 1 + .../docs/KnowledgeDocumentMetadataDto.md | 21 - .../docs/KnowledgeSearchResultDto.md | 20 - .../docs/ListKnowledgeDocumentsResponseDto.md | 14 - gooddata-api-client/docs/MetadataCheckApi.md | 70 - .../docs/PatchKnowledgeDocumentRequestDto.md | 14 - .../docs/RichTextWidgetDescriptor.md | 1 + .../docs/SearchKnowledgeResponseDto.md | 13 - .../docs/SearchStatisticsDto.md | 13 - gooddata-api-client/docs/SmartFunctionsApi.md | 6 + .../docs/UpsertKnowledgeDocumentRequestDto.md | 16 - .../UpsertKnowledgeDocumentResponseDto.md | 15 - .../VisualizationSwitcherWidgetDescriptor.md | 1 + gooddata-api-client/docs/WidgetDescriptor.md | 1 + .../gooddata_api_client/api/actions_api.py | 1332 +---------------- .../gooddata_api_client/api/ai_api.py | 118 -- .../api/metadata_check_api.py | 156 -- .../gooddata_api_client/apis/__init__.py | 1 - ...stics_dto.py => ai_usage_metadata_item.py} | 40 +- .../model/api_entitlement.py | 4 + .../gooddata_api_client/model/chat_result.py | 6 + .../create_knowledge_document_request_dto.py | 288 ---- .../create_knowledge_document_response_dto.py | 288 ---- .../delete_knowledge_document_response_dto.py | 276 ---- .../model/entitlements_request.py | 4 + .../model/insight_widget_descriptor.py | 10 + .../model/knowledge_document_metadata_dto.py | 318 ---- .../model/knowledge_search_result_dto.py | 314 ---- .../list_knowledge_documents_response_dto.py | 284 ---- .../patch_knowledge_document_request_dto.py | 272 ---- .../model/rich_text_widget_descriptor.py | 10 + .../model/search_knowledge_response_dto.py | 284 ---- .../upsert_knowledge_document_request_dto.py | 288 ---- .../upsert_knowledge_document_response_dto.py | 288 ---- ...isualization_switcher_widget_descriptor.py | 10 + .../model/widget_descriptor.py | 10 + .../analytics_model/analytics_model.py | 2 + schemas/gooddata-afm-client.json | 760 ++-------- schemas/gooddata-api-client.json | 757 +--------- schemas/gooddata-metadata-client.json | 29 +- 48 files changed, 333 insertions(+), 6776 deletions(-) rename gooddata-api-client/docs/{CreateKnowledgeDocumentRequestDto.md => AiUsageMetadataItem.md} (57%) delete mode 100644 gooddata-api-client/docs/CreateKnowledgeDocumentResponseDto.md delete mode 100644 gooddata-api-client/docs/DeleteKnowledgeDocumentResponseDto.md delete mode 100644 gooddata-api-client/docs/KnowledgeDocumentMetadataDto.md delete mode 100644 gooddata-api-client/docs/KnowledgeSearchResultDto.md delete mode 100644 gooddata-api-client/docs/ListKnowledgeDocumentsResponseDto.md delete mode 100644 gooddata-api-client/docs/MetadataCheckApi.md delete mode 100644 gooddata-api-client/docs/PatchKnowledgeDocumentRequestDto.md delete mode 100644 gooddata-api-client/docs/SearchKnowledgeResponseDto.md delete mode 100644 gooddata-api-client/docs/SearchStatisticsDto.md delete mode 100644 gooddata-api-client/docs/UpsertKnowledgeDocumentRequestDto.md delete mode 100644 gooddata-api-client/docs/UpsertKnowledgeDocumentResponseDto.md delete mode 100644 gooddata-api-client/gooddata_api_client/api/metadata_check_api.py rename gooddata-api-client/gooddata_api_client/model/{search_statistics_dto.py => ai_usage_metadata_item.py} (89%) delete mode 100644 gooddata-api-client/gooddata_api_client/model/create_knowledge_document_request_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/create_knowledge_document_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/delete_knowledge_document_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/knowledge_document_metadata_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/knowledge_search_result_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/list_knowledge_documents_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/patch_knowledge_document_request_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/search_knowledge_response_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_request_dto.py delete mode 100644 gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_response_dto.py diff --git a/gooddata-api-client/.openapi-generator/FILES b/gooddata-api-client/.openapi-generator/FILES index 1335bba55..0d27c0252 100644 --- a/gooddata-api-client/.openapi-generator/FILES +++ b/gooddata-api-client/.openapi-generator/FILES @@ -80,6 +80,7 @@ docs/AfmValidDescendantsResponse.md docs/AfmValidObjectsQuery.md docs/AfmValidObjectsResponse.md docs/AggregatedFactControllerApi.md +docs/AiUsageMetadataItem.md docs/AlertAfm.md docs/AlertCondition.md docs/AlertConditionOperand.md @@ -205,8 +206,6 @@ docs/ConvertGeoFileResponse.md docs/CookieSecurityConfigurationApi.md docs/CookieSecurityConfigurationControllerApi.md docs/CoverSlideTemplate.md -docs/CreateKnowledgeDocumentRequestDto.md -docs/CreateKnowledgeDocumentResponseDto.md docs/CreatedVisualization.md docs/CreatedVisualizationFiltersInner.md docs/CreatedVisualizations.md @@ -359,7 +358,6 @@ docs/DeclarativeWorkspaces.md docs/DefaultSmtp.md docs/DefaultSmtpAllOf.md docs/DeleteFilesRequest.md -docs/DeleteKnowledgeDocumentResponseDto.md docs/DependencyGraphApi.md docs/DependentEntitiesGraph.md docs/DependentEntitiesNode.md @@ -1066,9 +1064,7 @@ docs/KeyDriversDimension.md docs/KeyDriversRequest.md docs/KeyDriversResponse.md docs/KeyDriversResult.md -docs/KnowledgeDocumentMetadataDto.md docs/KnowledgeRecommendationControllerApi.md -docs/KnowledgeSearchResultDto.md docs/LDMDeclarativeAPIsApi.md docs/LLMEndpointsApi.md docs/LLMProvidersApi.md @@ -1077,7 +1073,6 @@ docs/LabelIdentifier.md docs/LabelsApi.md docs/LayoutApi.md docs/ListDatabaseInstancesResponse.md -docs/ListKnowledgeDocumentsResponseDto.md docs/ListLinks.md docs/ListLinksAllOf.md docs/ListLlmProviderModelsRequest.md @@ -1107,7 +1102,6 @@ docs/MeasureValueFilter.md docs/MemoryItemControllerApi.md docs/MemoryItemCreatedByUsers.md docs/MemoryItemUser.md -docs/MetadataCheckApi.md docs/MetadataSyncApi.md docs/Metric.md docs/MetricControllerApi.md @@ -1161,7 +1155,6 @@ docs/Over.md docs/PageMetadata.md docs/Paging.md docs/Parameter.md -docs/PatchKnowledgeDocumentRequestDto.md docs/PdfTableStyle.md docs/PdfTableStyleProperty.md docs/PdmLdmRequest.md @@ -1242,12 +1235,10 @@ docs/ScanResultPdm.md docs/ScanSqlRequest.md docs/ScanSqlResponse.md docs/ScanningApi.md -docs/SearchKnowledgeResponseDto.md docs/SearchRelationshipObject.md docs/SearchRequest.md docs/SearchResult.md docs/SearchResultObject.md -docs/SearchStatisticsDto.md docs/SectionSlideTemplate.md docs/ServiceInfo.md docs/SetCertificationRequest.md @@ -1307,8 +1298,6 @@ docs/TriggerQualityIssuesCalculationResponse.md docs/UIContext.md docs/UploadFileResponse.md docs/UploadGeoCollectionFileResponse.md -docs/UpsertKnowledgeDocumentRequestDto.md -docs/UpsertKnowledgeDocumentResponseDto.md docs/UsageApi.md docs/UserAssignee.md docs/UserContext.md @@ -1466,7 +1455,6 @@ gooddata_api_client/api/llm_provider_controller_api.py gooddata_api_client/api/llm_providers_api.py gooddata_api_client/api/manage_permissions_api.py gooddata_api_client/api/memory_item_controller_api.py -gooddata_api_client/api/metadata_check_api.py gooddata_api_client/api/metadata_sync_api.py gooddata_api_client/api/metric_controller_api.py gooddata_api_client/api/metrics_api.py @@ -1592,6 +1580,7 @@ gooddata_api_client/model/afm_valid_descendants_query.py gooddata_api_client/model/afm_valid_descendants_response.py gooddata_api_client/model/afm_valid_objects_query.py gooddata_api_client/model/afm_valid_objects_response.py +gooddata_api_client/model/ai_usage_metadata_item.py gooddata_api_client/model/alert_afm.py gooddata_api_client/model/alert_condition.py gooddata_api_client/model/alert_condition_operand.py @@ -1697,8 +1686,6 @@ gooddata_api_client/model/content_slide_template.py gooddata_api_client/model/convert_geo_file_request.py gooddata_api_client/model/convert_geo_file_response.py gooddata_api_client/model/cover_slide_template.py -gooddata_api_client/model/create_knowledge_document_request_dto.py -gooddata_api_client/model/create_knowledge_document_response_dto.py gooddata_api_client/model/created_visualization.py gooddata_api_client/model/created_visualization_filters_inner.py gooddata_api_client/model/created_visualizations.py @@ -1833,7 +1820,6 @@ gooddata_api_client/model/declarative_workspaces.py gooddata_api_client/model/default_smtp.py gooddata_api_client/model/default_smtp_all_of.py gooddata_api_client/model/delete_files_request.py -gooddata_api_client/model/delete_knowledge_document_response_dto.py gooddata_api_client/model/dependent_entities_graph.py gooddata_api_client/model/dependent_entities_node.py gooddata_api_client/model/dependent_entities_request.py @@ -2517,11 +2503,8 @@ gooddata_api_client/model/key_drivers_dimension.py gooddata_api_client/model/key_drivers_request.py gooddata_api_client/model/key_drivers_response.py gooddata_api_client/model/key_drivers_result.py -gooddata_api_client/model/knowledge_document_metadata_dto.py -gooddata_api_client/model/knowledge_search_result_dto.py gooddata_api_client/model/label_identifier.py gooddata_api_client/model/list_database_instances_response.py -gooddata_api_client/model/list_knowledge_documents_response_dto.py gooddata_api_client/model/list_links.py gooddata_api_client/model/list_links_all_of.py gooddata_api_client/model/list_llm_provider_models_request.py @@ -2587,7 +2570,6 @@ gooddata_api_client/model/over.py gooddata_api_client/model/page_metadata.py gooddata_api_client/model/paging.py gooddata_api_client/model/parameter.py -gooddata_api_client/model/patch_knowledge_document_request_dto.py gooddata_api_client/model/pdf_table_style.py gooddata_api_client/model/pdf_table_style_property.py gooddata_api_client/model/pdm_ldm_request.py @@ -2663,12 +2645,10 @@ gooddata_api_client/model/scan_request.py gooddata_api_client/model/scan_result_pdm.py gooddata_api_client/model/scan_sql_request.py gooddata_api_client/model/scan_sql_response.py -gooddata_api_client/model/search_knowledge_response_dto.py gooddata_api_client/model/search_relationship_object.py gooddata_api_client/model/search_request.py gooddata_api_client/model/search_result.py gooddata_api_client/model/search_result_object.py -gooddata_api_client/model/search_statistics_dto.py gooddata_api_client/model/section_slide_template.py gooddata_api_client/model/service_info.py gooddata_api_client/model/set_certification_request.py @@ -2722,8 +2702,6 @@ gooddata_api_client/model/trigger_quality_issues_calculation_response.py gooddata_api_client/model/ui_context.py gooddata_api_client/model/upload_file_response.py gooddata_api_client/model/upload_geo_collection_file_response.py -gooddata_api_client/model/upsert_knowledge_document_request_dto.py -gooddata_api_client/model/upsert_knowledge_document_response_dto.py gooddata_api_client/model/user_assignee.py gooddata_api_client/model/user_context.py gooddata_api_client/model/user_group_assignee.py diff --git a/gooddata-api-client/README.md b/gooddata-api-client/README.md index 4afc2d9b9..e13fb0034 100644 --- a/gooddata-api-client/README.md +++ b/gooddata-api-client/README.md @@ -94,7 +94,6 @@ Class | Method | HTTP request | Description *AIApi* | [**get_all_entities_memory_items**](docs/AIApi.md#get_all_entities_memory_items) | **GET** /api/v1/entities/workspaces/{workspaceId}/memoryItems | Get all Memory Items *AIApi* | [**get_entity_knowledge_recommendations**](docs/AIApi.md#get_entity_knowledge_recommendations) | **GET** /api/v1/entities/workspaces/{workspaceId}/knowledgeRecommendations/{objectId} | Get a Knowledge Recommendation *AIApi* | [**get_entity_memory_items**](docs/AIApi.md#get_entity_memory_items) | **GET** /api/v1/entities/workspaces/{workspaceId}/memoryItems/{objectId} | Get a Memory Item -*AIApi* | [**metadata_check_organization**](docs/AIApi.md#metadata_check_organization) | **POST** /api/v1/actions/organization/metadataCheck | (BETA) Check Organization Metadata Inconsistencies *AIApi* | [**metadata_sync**](docs/AIApi.md#metadata_sync) | **POST** /api/v1/actions/workspaces/{workspaceId}/metadataSync | (BETA) Sync Metadata to other services *AIApi* | [**metadata_sync_organization**](docs/AIApi.md#metadata_sync_organization) | **POST** /api/v1/actions/organization/metadataSync | (BETA) Sync organization scope Metadata to other services *AIApi* | [**patch_entity_knowledge_recommendations**](docs/AIApi.md#patch_entity_knowledge_recommendations) | **PATCH** /api/v1/entities/workspaces/{workspaceId}/knowledgeRecommendations/{objectId} | Patch a Knowledge Recommendation @@ -335,7 +334,6 @@ Class | Method | HTTP request | Description *ManagePermissionsApi* | [**get_data_source_permissions**](docs/ManagePermissionsApi.md#get_data_source_permissions) | **GET** /api/v1/layout/dataSources/{dataSourceId}/permissions | Get permissions for the data source *ManagePermissionsApi* | [**manage_data_source_permissions**](docs/ManagePermissionsApi.md#manage_data_source_permissions) | **POST** /api/v1/actions/dataSources/{dataSourceId}/managePermissions | Manage Permissions for a Data Source *ManagePermissionsApi* | [**set_data_source_permissions**](docs/ManagePermissionsApi.md#set_data_source_permissions) | **PUT** /api/v1/layout/dataSources/{dataSourceId}/permissions | Set data source permissions. -*MetadataCheckApi* | [**metadata_check_organization**](docs/MetadataCheckApi.md#metadata_check_organization) | **POST** /api/v1/actions/organization/metadataCheck | (BETA) Check Organization Metadata Inconsistencies *MetadataSyncApi* | [**metadata_sync**](docs/MetadataSyncApi.md#metadata_sync) | **POST** /api/v1/actions/workspaces/{workspaceId}/metadataSync | (BETA) Sync Metadata to other services *MetadataSyncApi* | [**metadata_sync_organization**](docs/MetadataSyncApi.md#metadata_sync_organization) | **POST** /api/v1/actions/organization/metadataSync | (BETA) Sync organization scope Metadata to other services *MetricsApi* | [**create_entity_metrics**](docs/MetricsApi.md#create_entity_metrics) | **POST** /api/v1/entities/workspaces/{workspaceId}/metrics | Post Metrics @@ -557,7 +555,6 @@ Class | Method | HTTP request | Description *ActionsApi* | [**compute_valid_objects**](docs/ActionsApi.md#compute_valid_objects) | **POST** /api/v1/actions/workspaces/{workspaceId}/execution/afm/computeValidObjects | Valid objects *ActionsApi* | [**convert_geo_file**](docs/ActionsApi.md#convert_geo_file) | **POST** /api/v1/actions/customGeoCollection/convert | Convert a geo file to GeoParquet format *ActionsApi* | [**create_dashboard_export_request**](docs/ActionsApi.md#create_dashboard_export_request) | **POST** /api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/export/tabular | (EXPERIMENTAL) Create dashboard tabular export request -*ActionsApi* | [**create_document**](docs/ActionsApi.md#create_document) | **POST** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents | *ActionsApi* | [**create_image_export**](docs/ActionsApi.md#create_image_export) | **POST** /api/v1/actions/workspaces/{workspaceId}/export/image | (EXPERIMENTAL) Create image export request *ActionsApi* | [**create_pdf_export**](docs/ActionsApi.md#create_pdf_export) | **POST** /api/v1/actions/workspaces/{workspaceId}/export/visual | Create visual - pdf export request *ActionsApi* | [**create_raw_export**](docs/ActionsApi.md#create_raw_export) | **POST** /api/v1/actions/workspaces/{workspaceId}/export/raw | (EXPERIMENTAL) Create raw export request @@ -566,7 +563,6 @@ Class | Method | HTTP request | Description *ActionsApi* | [**created_by**](docs/ActionsApi.md#created_by) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/analyticsCatalog/createdBy | Get Analytics Catalog CreatedBy Users *ActionsApi* | [**custom_geo_collection_staging_upload**](docs/ActionsApi.md#custom_geo_collection_staging_upload) | **POST** /api/v1/actions/customGeoCollection/staging/upload | Upload a geo collection file to the staging area *ActionsApi* | [**dashboard_permissions**](docs/ActionsApi.md#dashboard_permissions) | **GET** /api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/permissions | Get Dashboard Permissions -*ActionsApi* | [**delete_document**](docs/ActionsApi.md#delete_document) | **DELETE** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename} | *ActionsApi* | [**delete_files**](docs/ActionsApi.md#delete_files) | **POST** /api/v1/actions/fileStorage/dataSources/{dataSourceId}/deleteFiles | Delete datasource files *ActionsApi* | [**delete_organization_automations**](docs/ActionsApi.md#delete_organization_automations) | **POST** /api/v1/actions/organization/automations/delete | Delete selected automations across all workspaces *ActionsApi* | [**delete_workspace_automations**](docs/ActionsApi.md#delete_workspace_automations) | **POST** /api/v1/actions/workspaces/{workspaceId}/automations/delete | Delete selected automations in the workspace @@ -581,7 +577,6 @@ Class | Method | HTTP request | Description *ActionsApi* | [**get_data_source_schemata**](docs/ActionsApi.md#get_data_source_schemata) | **GET** /api/v1/actions/dataSources/{dataSourceId}/scanSchemata | Get a list of schema names of a database *ActionsApi* | [**get_dependent_entities_graph**](docs/ActionsApi.md#get_dependent_entities_graph) | **GET** /api/v1/actions/workspaces/{workspaceId}/dependentEntitiesGraph | Computes the dependent entities graph *ActionsApi* | [**get_dependent_entities_graph_from_entry_points**](docs/ActionsApi.md#get_dependent_entities_graph_from_entry_points) | **POST** /api/v1/actions/workspaces/{workspaceId}/dependentEntitiesGraph | Computes the dependent entities graph from given entry points -*ActionsApi* | [**get_document**](docs/ActionsApi.md#get_document) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename} | *ActionsApi* | [**get_exported_file**](docs/ActionsApi.md#get_exported_file) | **GET** /api/v1/actions/workspaces/{workspaceId}/export/visual/{exportId} | Retrieve exported files *ActionsApi* | [**get_image_export**](docs/ActionsApi.md#get_image_export) | **GET** /api/v1/actions/workspaces/{workspaceId}/export/image/{exportId} | (EXPERIMENTAL) Retrieve exported files *ActionsApi* | [**get_image_export_metadata**](docs/ActionsApi.md#get_image_export_metadata) | **GET** /api/v1/actions/workspaces/{workspaceId}/export/image/{exportId}/metadata | (EXPERIMENTAL) Retrieve metadata context @@ -601,7 +596,6 @@ Class | Method | HTTP request | Description *ActionsApi* | [**inherited_entity_prefixes**](docs/ActionsApi.md#inherited_entity_prefixes) | **GET** /api/v1/actions/workspaces/{workspaceId}/inheritedEntityPrefixes | Get used entity prefixes in hierarchy *ActionsApi* | [**key_driver_analysis**](docs/ActionsApi.md#key_driver_analysis) | **POST** /api/v1/actions/workspaces/{workspaceId}/execution/computeKeyDrivers | (EXPERIMENTAL) Compute key driver analysis *ActionsApi* | [**key_driver_analysis_result**](docs/ActionsApi.md#key_driver_analysis_result) | **GET** /api/v1/actions/workspaces/{workspaceId}/execution/computeKeyDrivers/result/{resultId} | (EXPERIMENTAL) Get key driver analysis result -*ActionsApi* | [**list_documents**](docs/ActionsApi.md#list_documents) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents | *ActionsApi* | [**list_files**](docs/ActionsApi.md#list_files) | **POST** /api/v1/actions/fileStorage/dataSources/{dataSourceId}/listFiles | List datasource files *ActionsApi* | [**list_llm_provider_models**](docs/ActionsApi.md#list_llm_provider_models) | **POST** /api/v1/actions/ai/llmProvider/listModels | List LLM Provider Models *ActionsApi* | [**list_llm_provider_models_by_id**](docs/ActionsApi.md#list_llm_provider_models_by_id) | **POST** /api/v1/actions/ai/llmProvider/{llmProviderId}/listModels | List LLM Provider Models By Id @@ -614,14 +608,12 @@ Class | Method | HTTP request | Description *ActionsApi* | [**mark_as_read_notification**](docs/ActionsApi.md#mark_as_read_notification) | **POST** /api/v1/actions/notifications/{notificationId}/markAsRead | Mark notification as read. *ActionsApi* | [**mark_as_read_notification_all**](docs/ActionsApi.md#mark_as_read_notification_all) | **POST** /api/v1/actions/notifications/markAsRead | Mark all notifications as read. *ActionsApi* | [**memory_created_by_users**](docs/ActionsApi.md#memory_created_by_users) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/memory/createdBy | Get AI Memory CreatedBy Users -*ActionsApi* | [**metadata_check_organization**](docs/ActionsApi.md#metadata_check_organization) | **POST** /api/v1/actions/organization/metadataCheck | (BETA) Check Organization Metadata Inconsistencies *ActionsApi* | [**metadata_sync**](docs/ActionsApi.md#metadata_sync) | **POST** /api/v1/actions/workspaces/{workspaceId}/metadataSync | (BETA) Sync Metadata to other services *ActionsApi* | [**metadata_sync_organization**](docs/ActionsApi.md#metadata_sync_organization) | **POST** /api/v1/actions/organization/metadataSync | (BETA) Sync organization scope Metadata to other services *ActionsApi* | [**outlier_detection**](docs/ActionsApi.md#outlier_detection) | **POST** /api/v1/actions/workspaces/{workspaceId}/execution/detectOutliers | (BETA) Outlier Detection *ActionsApi* | [**outlier_detection_result**](docs/ActionsApi.md#outlier_detection_result) | **GET** /api/v1/actions/workspaces/{workspaceId}/execution/detectOutliers/result/{resultId} | (BETA) Outlier Detection Result *ActionsApi* | [**overridden_child_entities**](docs/ActionsApi.md#overridden_child_entities) | **GET** /api/v1/actions/workspaces/{workspaceId}/overriddenChildEntities | Finds identifier overrides in workspace hierarchy. *ActionsApi* | [**particular_platform_usage**](docs/ActionsApi.md#particular_platform_usage) | **POST** /api/v1/actions/collectUsage | Info about the platform usage for particular items. -*ActionsApi* | [**patch_document**](docs/ActionsApi.md#patch_document) | **PATCH** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename} | *ActionsApi* | [**pause_organization_automations**](docs/ActionsApi.md#pause_organization_automations) | **POST** /api/v1/actions/organization/automations/pause | Pause selected automations across all workspaces *ActionsApi* | [**pause_workspace_automations**](docs/ActionsApi.md#pause_workspace_automations) | **POST** /api/v1/actions/workspaces/{workspaceId}/automations/pause | Pause selected automations in the workspace *ActionsApi* | [**read_csv_file_manifests**](docs/ActionsApi.md#read_csv_file_manifests) | **POST** /api/v1/actions/fileStorage/dataSources/{dataSourceId}/readCsvFileManifests | Read CSV file manifests @@ -638,7 +630,6 @@ Class | Method | HTTP request | Description *ActionsApi* | [**retrieve_translations**](docs/ActionsApi.md#retrieve_translations) | **POST** /api/v1/actions/workspaces/{workspaceId}/translations/retrieve | Retrieve translations for entities. *ActionsApi* | [**scan_data_source**](docs/ActionsApi.md#scan_data_source) | **POST** /api/v1/actions/dataSources/{dataSourceId}/scan | Scan a database to get a physical data model (PDM) *ActionsApi* | [**scan_sql**](docs/ActionsApi.md#scan_sql) | **POST** /api/v1/actions/dataSources/{dataSourceId}/scanSql | Collect metadata about SQL query -*ActionsApi* | [**search_knowledge**](docs/ActionsApi.md#search_knowledge) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/search | *ActionsApi* | [**set_certification**](docs/ActionsApi.md#set_certification) | **POST** /api/v1/actions/workspaces/{workspaceId}/setCertification | Set Certification *ActionsApi* | [**set_translations**](docs/ActionsApi.md#set_translations) | **POST** /api/v1/actions/workspaces/{workspaceId}/translations/set | Set translations for entities. *ActionsApi* | [**staging_upload**](docs/ActionsApi.md#staging_upload) | **POST** /api/v1/actions/fileStorage/staging/upload | Upload a file to the staging area @@ -661,7 +652,6 @@ Class | Method | HTTP request | Description *ActionsApi* | [**unsubscribe_organization_automations**](docs/ActionsApi.md#unsubscribe_organization_automations) | **POST** /api/v1/actions/organization/automations/unsubscribe | Unsubscribe from selected automations across all workspaces *ActionsApi* | [**unsubscribe_selected_workspace_automations**](docs/ActionsApi.md#unsubscribe_selected_workspace_automations) | **POST** /api/v1/actions/workspaces/{workspaceId}/automations/unsubscribe | Unsubscribe from selected automations in the workspace *ActionsApi* | [**unsubscribe_workspace_automations**](docs/ActionsApi.md#unsubscribe_workspace_automations) | **DELETE** /api/v1/actions/workspaces/{workspaceId}/automations/unsubscribe | Unsubscribe from all automations in the workspace -*ActionsApi* | [**upsert_document**](docs/ActionsApi.md#upsert_document) | **PUT** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents | *ActionsApi* | [**validate_llm_endpoint**](docs/ActionsApi.md#validate_llm_endpoint) | **POST** /api/v1/actions/ai/llmEndpoint/test | Validate LLM Endpoint *ActionsApi* | [**validate_llm_endpoint_by_id**](docs/ActionsApi.md#validate_llm_endpoint_by_id) | **POST** /api/v1/actions/ai/llmEndpoint/{llmEndpointId}/test | Validate LLM Endpoint By Id *ActionsApi* | [**workspace_resolve_all_settings**](docs/ActionsApi.md#workspace_resolve_all_settings) | **GET** /api/v1/actions/workspaces/{workspaceId}/resolveSettings | Values for all settings. @@ -1281,6 +1271,7 @@ Class | Method | HTTP request | Description - [AfmValidDescendantsResponse](docs/AfmValidDescendantsResponse.md) - [AfmValidObjectsQuery](docs/AfmValidObjectsQuery.md) - [AfmValidObjectsResponse](docs/AfmValidObjectsResponse.md) + - [AiUsageMetadataItem](docs/AiUsageMetadataItem.md) - [AlertAfm](docs/AlertAfm.md) - [AlertCondition](docs/AlertCondition.md) - [AlertConditionOperand](docs/AlertConditionOperand.md) @@ -1386,8 +1377,6 @@ Class | Method | HTTP request | Description - [ConvertGeoFileRequest](docs/ConvertGeoFileRequest.md) - [ConvertGeoFileResponse](docs/ConvertGeoFileResponse.md) - [CoverSlideTemplate](docs/CoverSlideTemplate.md) - - [CreateKnowledgeDocumentRequestDto](docs/CreateKnowledgeDocumentRequestDto.md) - - [CreateKnowledgeDocumentResponseDto](docs/CreateKnowledgeDocumentResponseDto.md) - [CreatedVisualization](docs/CreatedVisualization.md) - [CreatedVisualizationFiltersInner](docs/CreatedVisualizationFiltersInner.md) - [CreatedVisualizations](docs/CreatedVisualizations.md) @@ -1522,7 +1511,6 @@ Class | Method | HTTP request | Description - [DefaultSmtp](docs/DefaultSmtp.md) - [DefaultSmtpAllOf](docs/DefaultSmtpAllOf.md) - [DeleteFilesRequest](docs/DeleteFilesRequest.md) - - [DeleteKnowledgeDocumentResponseDto](docs/DeleteKnowledgeDocumentResponseDto.md) - [DependentEntitiesGraph](docs/DependentEntitiesGraph.md) - [DependentEntitiesNode](docs/DependentEntitiesNode.md) - [DependentEntitiesRequest](docs/DependentEntitiesRequest.md) @@ -2206,11 +2194,8 @@ Class | Method | HTTP request | Description - [KeyDriversRequest](docs/KeyDriversRequest.md) - [KeyDriversResponse](docs/KeyDriversResponse.md) - [KeyDriversResult](docs/KeyDriversResult.md) - - [KnowledgeDocumentMetadataDto](docs/KnowledgeDocumentMetadataDto.md) - - [KnowledgeSearchResultDto](docs/KnowledgeSearchResultDto.md) - [LabelIdentifier](docs/LabelIdentifier.md) - [ListDatabaseInstancesResponse](docs/ListDatabaseInstancesResponse.md) - - [ListKnowledgeDocumentsResponseDto](docs/ListKnowledgeDocumentsResponseDto.md) - [ListLinks](docs/ListLinks.md) - [ListLinksAllOf](docs/ListLinksAllOf.md) - [ListLlmProviderModelsRequest](docs/ListLlmProviderModelsRequest.md) @@ -2276,7 +2261,6 @@ Class | Method | HTTP request | Description - [PageMetadata](docs/PageMetadata.md) - [Paging](docs/Paging.md) - [Parameter](docs/Parameter.md) - - [PatchKnowledgeDocumentRequestDto](docs/PatchKnowledgeDocumentRequestDto.md) - [PdfTableStyle](docs/PdfTableStyle.md) - [PdfTableStyleProperty](docs/PdfTableStyleProperty.md) - [PdmLdmRequest](docs/PdmLdmRequest.md) @@ -2352,12 +2336,10 @@ Class | Method | HTTP request | Description - [ScanResultPdm](docs/ScanResultPdm.md) - [ScanSqlRequest](docs/ScanSqlRequest.md) - [ScanSqlResponse](docs/ScanSqlResponse.md) - - [SearchKnowledgeResponseDto](docs/SearchKnowledgeResponseDto.md) - [SearchRelationshipObject](docs/SearchRelationshipObject.md) - [SearchRequest](docs/SearchRequest.md) - [SearchResult](docs/SearchResult.md) - [SearchResultObject](docs/SearchResultObject.md) - - [SearchStatisticsDto](docs/SearchStatisticsDto.md) - [SectionSlideTemplate](docs/SectionSlideTemplate.md) - [ServiceInfo](docs/ServiceInfo.md) - [SetCertificationRequest](docs/SetCertificationRequest.md) @@ -2411,8 +2393,6 @@ Class | Method | HTTP request | Description - [UIContext](docs/UIContext.md) - [UploadFileResponse](docs/UploadFileResponse.md) - [UploadGeoCollectionFileResponse](docs/UploadGeoCollectionFileResponse.md) - - [UpsertKnowledgeDocumentRequestDto](docs/UpsertKnowledgeDocumentRequestDto.md) - - [UpsertKnowledgeDocumentResponseDto](docs/UpsertKnowledgeDocumentResponseDto.md) - [UserAssignee](docs/UserAssignee.md) - [UserContext](docs/UserContext.md) - [UserGroupAssignee](docs/UserGroupAssignee.md) diff --git a/gooddata-api-client/docs/AIApi.md b/gooddata-api-client/docs/AIApi.md index 3eec9d650..dac699e1b 100644 --- a/gooddata-api-client/docs/AIApi.md +++ b/gooddata-api-client/docs/AIApi.md @@ -12,7 +12,6 @@ Method | HTTP request | Description [**get_all_entities_memory_items**](AIApi.md#get_all_entities_memory_items) | **GET** /api/v1/entities/workspaces/{workspaceId}/memoryItems | Get all Memory Items [**get_entity_knowledge_recommendations**](AIApi.md#get_entity_knowledge_recommendations) | **GET** /api/v1/entities/workspaces/{workspaceId}/knowledgeRecommendations/{objectId} | Get a Knowledge Recommendation [**get_entity_memory_items**](AIApi.md#get_entity_memory_items) | **GET** /api/v1/entities/workspaces/{workspaceId}/memoryItems/{objectId} | Get a Memory Item -[**metadata_check_organization**](AIApi.md#metadata_check_organization) | **POST** /api/v1/actions/organization/metadataCheck | (BETA) Check Organization Metadata Inconsistencies [**metadata_sync**](AIApi.md#metadata_sync) | **POST** /api/v1/actions/workspaces/{workspaceId}/metadataSync | (BETA) Sync Metadata to other services [**metadata_sync_organization**](AIApi.md#metadata_sync_organization) | **POST** /api/v1/actions/organization/metadataSync | (BETA) Sync organization scope Metadata to other services [**patch_entity_knowledge_recommendations**](AIApi.md#patch_entity_knowledge_recommendations) | **PATCH** /api/v1/entities/workspaces/{workspaceId}/knowledgeRecommendations/{objectId} | Patch a Knowledge Recommendation @@ -744,67 +743,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **metadata_check_organization** -> metadata_check_organization() - -(BETA) Check Organization Metadata Inconsistencies - -(BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import ai_api -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = ai_api.AIApi(api_client) - - # example, this endpoint has no required or optional parameters - try: - # (BETA) Check Organization Metadata Inconsistencies - api_instance.metadata_check_organization() - except gooddata_api_client.ApiException as e: - print("Exception when calling AIApi->metadata_check_organization: %s\n" % e) -``` - - -### Parameters -This endpoint does not need any parameter. - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **metadata_sync** > metadata_sync(workspace_id) diff --git a/gooddata-api-client/docs/ActionsApi.md b/gooddata-api-client/docs/ActionsApi.md index 3c1186ff7..4d01620bc 100644 --- a/gooddata-api-client/docs/ActionsApi.md +++ b/gooddata-api-client/docs/ActionsApi.md @@ -30,7 +30,6 @@ Method | HTTP request | Description [**compute_valid_objects**](ActionsApi.md#compute_valid_objects) | **POST** /api/v1/actions/workspaces/{workspaceId}/execution/afm/computeValidObjects | Valid objects [**convert_geo_file**](ActionsApi.md#convert_geo_file) | **POST** /api/v1/actions/customGeoCollection/convert | Convert a geo file to GeoParquet format [**create_dashboard_export_request**](ActionsApi.md#create_dashboard_export_request) | **POST** /api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/export/tabular | (EXPERIMENTAL) Create dashboard tabular export request -[**create_document**](ActionsApi.md#create_document) | **POST** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents | [**create_image_export**](ActionsApi.md#create_image_export) | **POST** /api/v1/actions/workspaces/{workspaceId}/export/image | (EXPERIMENTAL) Create image export request [**create_pdf_export**](ActionsApi.md#create_pdf_export) | **POST** /api/v1/actions/workspaces/{workspaceId}/export/visual | Create visual - pdf export request [**create_raw_export**](ActionsApi.md#create_raw_export) | **POST** /api/v1/actions/workspaces/{workspaceId}/export/raw | (EXPERIMENTAL) Create raw export request @@ -39,7 +38,6 @@ Method | HTTP request | Description [**created_by**](ActionsApi.md#created_by) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/analyticsCatalog/createdBy | Get Analytics Catalog CreatedBy Users [**custom_geo_collection_staging_upload**](ActionsApi.md#custom_geo_collection_staging_upload) | **POST** /api/v1/actions/customGeoCollection/staging/upload | Upload a geo collection file to the staging area [**dashboard_permissions**](ActionsApi.md#dashboard_permissions) | **GET** /api/v1/actions/workspaces/{workspaceId}/analyticalDashboards/{dashboardId}/permissions | Get Dashboard Permissions -[**delete_document**](ActionsApi.md#delete_document) | **DELETE** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename} | [**delete_files**](ActionsApi.md#delete_files) | **POST** /api/v1/actions/fileStorage/dataSources/{dataSourceId}/deleteFiles | Delete datasource files [**delete_organization_automations**](ActionsApi.md#delete_organization_automations) | **POST** /api/v1/actions/organization/automations/delete | Delete selected automations across all workspaces [**delete_workspace_automations**](ActionsApi.md#delete_workspace_automations) | **POST** /api/v1/actions/workspaces/{workspaceId}/automations/delete | Delete selected automations in the workspace @@ -54,7 +52,6 @@ Method | HTTP request | Description [**get_data_source_schemata**](ActionsApi.md#get_data_source_schemata) | **GET** /api/v1/actions/dataSources/{dataSourceId}/scanSchemata | Get a list of schema names of a database [**get_dependent_entities_graph**](ActionsApi.md#get_dependent_entities_graph) | **GET** /api/v1/actions/workspaces/{workspaceId}/dependentEntitiesGraph | Computes the dependent entities graph [**get_dependent_entities_graph_from_entry_points**](ActionsApi.md#get_dependent_entities_graph_from_entry_points) | **POST** /api/v1/actions/workspaces/{workspaceId}/dependentEntitiesGraph | Computes the dependent entities graph from given entry points -[**get_document**](ActionsApi.md#get_document) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename} | [**get_exported_file**](ActionsApi.md#get_exported_file) | **GET** /api/v1/actions/workspaces/{workspaceId}/export/visual/{exportId} | Retrieve exported files [**get_image_export**](ActionsApi.md#get_image_export) | **GET** /api/v1/actions/workspaces/{workspaceId}/export/image/{exportId} | (EXPERIMENTAL) Retrieve exported files [**get_image_export_metadata**](ActionsApi.md#get_image_export_metadata) | **GET** /api/v1/actions/workspaces/{workspaceId}/export/image/{exportId}/metadata | (EXPERIMENTAL) Retrieve metadata context @@ -74,7 +71,6 @@ Method | HTTP request | Description [**inherited_entity_prefixes**](ActionsApi.md#inherited_entity_prefixes) | **GET** /api/v1/actions/workspaces/{workspaceId}/inheritedEntityPrefixes | Get used entity prefixes in hierarchy [**key_driver_analysis**](ActionsApi.md#key_driver_analysis) | **POST** /api/v1/actions/workspaces/{workspaceId}/execution/computeKeyDrivers | (EXPERIMENTAL) Compute key driver analysis [**key_driver_analysis_result**](ActionsApi.md#key_driver_analysis_result) | **GET** /api/v1/actions/workspaces/{workspaceId}/execution/computeKeyDrivers/result/{resultId} | (EXPERIMENTAL) Get key driver analysis result -[**list_documents**](ActionsApi.md#list_documents) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents | [**list_files**](ActionsApi.md#list_files) | **POST** /api/v1/actions/fileStorage/dataSources/{dataSourceId}/listFiles | List datasource files [**list_llm_provider_models**](ActionsApi.md#list_llm_provider_models) | **POST** /api/v1/actions/ai/llmProvider/listModels | List LLM Provider Models [**list_llm_provider_models_by_id**](ActionsApi.md#list_llm_provider_models_by_id) | **POST** /api/v1/actions/ai/llmProvider/{llmProviderId}/listModels | List LLM Provider Models By Id @@ -87,14 +83,12 @@ Method | HTTP request | Description [**mark_as_read_notification**](ActionsApi.md#mark_as_read_notification) | **POST** /api/v1/actions/notifications/{notificationId}/markAsRead | Mark notification as read. [**mark_as_read_notification_all**](ActionsApi.md#mark_as_read_notification_all) | **POST** /api/v1/actions/notifications/markAsRead | Mark all notifications as read. [**memory_created_by_users**](ActionsApi.md#memory_created_by_users) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/memory/createdBy | Get AI Memory CreatedBy Users -[**metadata_check_organization**](ActionsApi.md#metadata_check_organization) | **POST** /api/v1/actions/organization/metadataCheck | (BETA) Check Organization Metadata Inconsistencies [**metadata_sync**](ActionsApi.md#metadata_sync) | **POST** /api/v1/actions/workspaces/{workspaceId}/metadataSync | (BETA) Sync Metadata to other services [**metadata_sync_organization**](ActionsApi.md#metadata_sync_organization) | **POST** /api/v1/actions/organization/metadataSync | (BETA) Sync organization scope Metadata to other services [**outlier_detection**](ActionsApi.md#outlier_detection) | **POST** /api/v1/actions/workspaces/{workspaceId}/execution/detectOutliers | (BETA) Outlier Detection [**outlier_detection_result**](ActionsApi.md#outlier_detection_result) | **GET** /api/v1/actions/workspaces/{workspaceId}/execution/detectOutliers/result/{resultId} | (BETA) Outlier Detection Result [**overridden_child_entities**](ActionsApi.md#overridden_child_entities) | **GET** /api/v1/actions/workspaces/{workspaceId}/overriddenChildEntities | Finds identifier overrides in workspace hierarchy. [**particular_platform_usage**](ActionsApi.md#particular_platform_usage) | **POST** /api/v1/actions/collectUsage | Info about the platform usage for particular items. -[**patch_document**](ActionsApi.md#patch_document) | **PATCH** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename} | [**pause_organization_automations**](ActionsApi.md#pause_organization_automations) | **POST** /api/v1/actions/organization/automations/pause | Pause selected automations across all workspaces [**pause_workspace_automations**](ActionsApi.md#pause_workspace_automations) | **POST** /api/v1/actions/workspaces/{workspaceId}/automations/pause | Pause selected automations in the workspace [**read_csv_file_manifests**](ActionsApi.md#read_csv_file_manifests) | **POST** /api/v1/actions/fileStorage/dataSources/{dataSourceId}/readCsvFileManifests | Read CSV file manifests @@ -111,7 +105,6 @@ Method | HTTP request | Description [**retrieve_translations**](ActionsApi.md#retrieve_translations) | **POST** /api/v1/actions/workspaces/{workspaceId}/translations/retrieve | Retrieve translations for entities. [**scan_data_source**](ActionsApi.md#scan_data_source) | **POST** /api/v1/actions/dataSources/{dataSourceId}/scan | Scan a database to get a physical data model (PDM) [**scan_sql**](ActionsApi.md#scan_sql) | **POST** /api/v1/actions/dataSources/{dataSourceId}/scanSql | Collect metadata about SQL query -[**search_knowledge**](ActionsApi.md#search_knowledge) | **GET** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/search | [**set_certification**](ActionsApi.md#set_certification) | **POST** /api/v1/actions/workspaces/{workspaceId}/setCertification | Set Certification [**set_translations**](ActionsApi.md#set_translations) | **POST** /api/v1/actions/workspaces/{workspaceId}/translations/set | Set translations for entities. [**staging_upload**](ActionsApi.md#staging_upload) | **POST** /api/v1/actions/fileStorage/staging/upload | Upload a file to the staging area @@ -134,7 +127,6 @@ Method | HTTP request | Description [**unsubscribe_organization_automations**](ActionsApi.md#unsubscribe_organization_automations) | **POST** /api/v1/actions/organization/automations/unsubscribe | Unsubscribe from selected automations across all workspaces [**unsubscribe_selected_workspace_automations**](ActionsApi.md#unsubscribe_selected_workspace_automations) | **POST** /api/v1/actions/workspaces/{workspaceId}/automations/unsubscribe | Unsubscribe from selected automations in the workspace [**unsubscribe_workspace_automations**](ActionsApi.md#unsubscribe_workspace_automations) | **DELETE** /api/v1/actions/workspaces/{workspaceId}/automations/unsubscribe | Unsubscribe from all automations in the workspace -[**upsert_document**](ActionsApi.md#upsert_document) | **PUT** /api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents | [**validate_llm_endpoint**](ActionsApi.md#validate_llm_endpoint) | **POST** /api/v1/actions/ai/llmEndpoint/test | Validate LLM Endpoint [**validate_llm_endpoint_by_id**](ActionsApi.md#validate_llm_endpoint_by_id) | **POST** /api/v1/actions/ai/llmEndpoint/{llmEndpointId}/test | Validate LLM Endpoint By Id [**workspace_resolve_all_settings**](ActionsApi.md#workspace_resolve_all_settings) | **GET** /api/v1/actions/workspaces/{workspaceId}/resolveSettings | Values for all settings. @@ -215,6 +207,9 @@ with gooddata_api_client.ApiClient() as api_client: id="id_example", widgets=[ WidgetDescriptor( + filters=[ + ChangeAnalysisParamsFiltersInner(None), + ], title="title_example", widget_id="widget_id_example", widget_type="widget_type_example", @@ -418,6 +413,9 @@ with gooddata_api_client.ApiClient() as api_client: id="id_example", widgets=[ WidgetDescriptor( + filters=[ + ChangeAnalysisParamsFiltersInner(None), + ], title="title_example", widget_id="widget_id_example", widget_type="widget_type_example", @@ -2411,83 +2409,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **create_document** -> CreateKnowledgeDocumentResponseDto create_document(workspace_id, create_knowledge_document_request_dto) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.create_knowledge_document_response_dto import CreateKnowledgeDocumentResponseDto -from gooddata_api_client.model.create_knowledge_document_request_dto import CreateKnowledgeDocumentRequestDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - create_knowledge_document_request_dto = CreateKnowledgeDocumentRequestDto( - content="content_example", - filename="filename_example", - page_boundaries=[ - 1, - ], - scopes=[ - "scopes_example", - ], - title="title_example", - ) # CreateKnowledgeDocumentRequestDto | - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.create_document(workspace_id, create_knowledge_document_request_dto) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->create_document: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **create_knowledge_document_request_dto** | [**CreateKnowledgeDocumentRequestDto**](CreateKnowledgeDocumentRequestDto.md)| | - -### Return type - -[**CreateKnowledgeDocumentResponseDto**](CreateKnowledgeDocumentResponseDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **create_image_export** > ExportResponse create_image_export(workspace_id, image_export_request) @@ -3187,72 +3108,6 @@ No authorization required - **Accept**: application/json -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **delete_document** -> DeleteKnowledgeDocumentResponseDto delete_document(workspace_id, filename) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.delete_knowledge_document_response_dto import DeleteKnowledgeDocumentResponseDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - filename = "filename_example" # str | - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.delete_document(workspace_id, filename) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->delete_document: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **filename** | **str**| | - -### Return type - -[**DeleteKnowledgeDocumentResponseDto**](DeleteKnowledgeDocumentResponseDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - ### HTTP response details | Status code | Description | Response headers | @@ -4502,72 +4357,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **get_document** -> KnowledgeDocumentMetadataDto get_document(workspace_id, filename) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.knowledge_document_metadata_dto import KnowledgeDocumentMetadataDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - filename = "filename_example" # str | - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.get_document(workspace_id, filename) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->get_document: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **filename** | **str**| | - -### Return type - -[**KnowledgeDocumentMetadataDto**](KnowledgeDocumentMetadataDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **get_exported_file** > file_type get_exported_file(workspace_id, export_id) @@ -5968,92 +5757,6 @@ No authorization required - **Accept**: application/json -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **list_documents** -> ListKnowledgeDocumentsResponseDto list_documents(workspace_id) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.list_knowledge_documents_response_dto import ListKnowledgeDocumentsResponseDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - scopes = [ - "scopes_example", - ] # [str] | (optional) - size = 50 # int | (optional) if omitted the server will use the default value of 50 - page_token = "pageToken_example" # str | (optional) - meta_include = "metaInclude_example" # str | (optional) - state = "state_example" # str | (optional) - query = "query_example" # str | (optional) - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.list_documents(workspace_id) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->list_documents: %s\n" % e) - - # example passing only required values which don't have defaults set - # and optional values - try: - api_response = api_instance.list_documents(workspace_id, scopes=scopes, size=size, page_token=page_token, meta_include=meta_include, state=state, query=query) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->list_documents: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **scopes** | **[str]**| | [optional] - **size** | **int**| | [optional] if omitted the server will use the default value of 50 - **page_token** | **str**| | [optional] - **meta_include** | **str**| | [optional] - **state** | **str**| | [optional] - **query** | **str**| | [optional] - -### Return type - -[**ListKnowledgeDocumentsResponseDto**](ListKnowledgeDocumentsResponseDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - ### HTTP response details | Status code | Description | Response headers | @@ -6917,67 +6620,6 @@ No authorization required - **Accept**: application/json -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **metadata_check_organization** -> metadata_check_organization() - -(BETA) Check Organization Metadata Inconsistencies - -(BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - - # example, this endpoint has no required or optional parameters - try: - # (BETA) Check Organization Metadata Inconsistencies - api_instance.metadata_check_organization() - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->metadata_check_organization: %s\n" % e) -``` - - -### Parameters -This endpoint does not need any parameter. - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - ### HTTP response details | Status code | Description | Response headers | @@ -7436,81 +7078,6 @@ No authorization required - **Accept**: application/json -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **patch_document** -> KnowledgeDocumentMetadataDto patch_document(workspace_id, filename, patch_knowledge_document_request_dto) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.knowledge_document_metadata_dto import KnowledgeDocumentMetadataDto -from gooddata_api_client.model.patch_knowledge_document_request_dto import PatchKnowledgeDocumentRequestDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - filename = "filename_example" # str | - patch_knowledge_document_request_dto = PatchKnowledgeDocumentRequestDto( - is_disabled=True, - scopes=[ - "scopes_example", - ], - title="title_example", - ) # PatchKnowledgeDocumentRequestDto | - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.patch_document(workspace_id, filename, patch_knowledge_document_request_dto) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->patch_document: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **filename** | **str**| | - **patch_knowledge_document_request_dto** | [**PatchKnowledgeDocumentRequestDto**](PatchKnowledgeDocumentRequestDto.md)| | - -### Return type - -[**KnowledgeDocumentMetadataDto**](KnowledgeDocumentMetadataDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - - ### HTTP response details | Status code | Description | Response headers | @@ -8683,88 +8250,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **search_knowledge** -> SearchKnowledgeResponseDto search_knowledge(workspace_id, query) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.search_knowledge_response_dto import SearchKnowledgeResponseDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - query = "query_example" # str | - limit = 10 # int | (optional) if omitted the server will use the default value of 10 - min_score = 0.0 # float | (optional) if omitted the server will use the default value of 0.0 - scopes = [ - "scopes_example", - ] # [str] | (optional) - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.search_knowledge(workspace_id, query) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->search_knowledge: %s\n" % e) - - # example passing only required values which don't have defaults set - # and optional values - try: - api_response = api_instance.search_knowledge(workspace_id, query, limit=limit, min_score=min_score, scopes=scopes) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->search_knowledge: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **query** | **str**| | - **limit** | **int**| | [optional] if omitted the server will use the default value of 10 - **min_score** | **float**| | [optional] if omitted the server will use the default value of 0.0 - **scopes** | **[str]**| | [optional] - -### Return type - -[**SearchKnowledgeResponseDto**](SearchKnowledgeResponseDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **set_certification** > set_certification(workspace_id, set_certification_request) @@ -10642,83 +10127,6 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **upsert_document** -> UpsertKnowledgeDocumentResponseDto upsert_document(workspace_id, upsert_knowledge_document_request_dto) - - - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import actions_api -from gooddata_api_client.model.upsert_knowledge_document_response_dto import UpsertKnowledgeDocumentResponseDto -from gooddata_api_client.model.upsert_knowledge_document_request_dto import UpsertKnowledgeDocumentRequestDto -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = actions_api.ActionsApi(api_client) - workspace_id = "/6bUUGjjNSwg0_bs" # str | Workspace identifier - upsert_knowledge_document_request_dto = UpsertKnowledgeDocumentRequestDto( - content="content_example", - filename="filename_example", - page_boundaries=[ - 1, - ], - scopes=[ - "scopes_example", - ], - title="title_example", - ) # UpsertKnowledgeDocumentRequestDto | - - # example passing only required values which don't have defaults set - try: - api_response = api_instance.upsert_document(workspace_id, upsert_knowledge_document_request_dto) - pprint(api_response) - except gooddata_api_client.ApiException as e: - print("Exception when calling ActionsApi->upsert_document: %s\n" % e) -``` - - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **workspace_id** | **str**| Workspace identifier | - **upsert_knowledge_document_request_dto** | [**UpsertKnowledgeDocumentRequestDto**](UpsertKnowledgeDocumentRequestDto.md)| | - -### Return type - -[**UpsertKnowledgeDocumentResponseDto**](UpsertKnowledgeDocumentResponseDto.md) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **validate_llm_endpoint** > ValidateLLMEndpointResponse validate_llm_endpoint(validate_llm_endpoint_request) diff --git a/gooddata-api-client/docs/CreateKnowledgeDocumentRequestDto.md b/gooddata-api-client/docs/AiUsageMetadataItem.md similarity index 57% rename from gooddata-api-client/docs/CreateKnowledgeDocumentRequestDto.md rename to gooddata-api-client/docs/AiUsageMetadataItem.md index 7fb5d2c15..d0f1f239b 100644 --- a/gooddata-api-client/docs/CreateKnowledgeDocumentRequestDto.md +++ b/gooddata-api-client/docs/AiUsageMetadataItem.md @@ -1,14 +1,13 @@ -# CreateKnowledgeDocumentRequestDto +# AiUsageMetadataItem +AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit). ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**content** | **str** | | -**filename** | **str** | | -**page_boundaries** | **[int]** | | [optional] -**scopes** | **[str]** | | [optional] -**title** | **str** | | [optional] +**counter_type** | **str** | Type of usage counter, e.g. AI_QUERIES. | +**current_value** | **int** | Current usage value after this request. | +**limit** | **int** | Entitlement limit. 0 means unlimited. | **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/gooddata-api-client/docs/ChatResult.md b/gooddata-api-client/docs/ChatResult.md index 6916872fe..6b0e79b5b 100644 --- a/gooddata-api-client/docs/ChatResult.md +++ b/gooddata-api-client/docs/ChatResult.md @@ -15,6 +15,7 @@ Name | Type | Description | Notes **text_response** | **str** | Text response for general questions. | [optional] **thread_id_suffix** | **str** | Chat History thread suffix appended to ID generated by backend. Enables more chat windows. | [optional] **tool_call_events** | [**[ToolCallEventResult]**](ToolCallEventResult.md) | Tool call events emitted during the agentic loop (only present when GEN_AI_YIELD_TOOL_CALL_EVENTS is enabled). | [optional] +**usage** | [**[AiUsageMetadataItem]**](AiUsageMetadataItem.md) | AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit). | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/gooddata-api-client/docs/CreateKnowledgeDocumentResponseDto.md b/gooddata-api-client/docs/CreateKnowledgeDocumentResponseDto.md deleted file mode 100644 index f06a7a5ed..000000000 --- a/gooddata-api-client/docs/CreateKnowledgeDocumentResponseDto.md +++ /dev/null @@ -1,15 +0,0 @@ -# CreateKnowledgeDocumentResponseDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**filename** | **str** | | -**message** | **str** | | -**num_chunks** | **int** | | -**success** | **bool** | | -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/DeleteKnowledgeDocumentResponseDto.md b/gooddata-api-client/docs/DeleteKnowledgeDocumentResponseDto.md deleted file mode 100644 index 0f8d7a84d..000000000 --- a/gooddata-api-client/docs/DeleteKnowledgeDocumentResponseDto.md +++ /dev/null @@ -1,13 +0,0 @@ -# DeleteKnowledgeDocumentResponseDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**message** | **str** | | -**success** | **bool** | | -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/InsightWidgetDescriptor.md b/gooddata-api-client/docs/InsightWidgetDescriptor.md index f429d6d70..7c52bfb77 100644 --- a/gooddata-api-client/docs/InsightWidgetDescriptor.md +++ b/gooddata-api-client/docs/InsightWidgetDescriptor.md @@ -8,6 +8,7 @@ Name | Type | Description | Notes **title** | **str** | Widget title as displayed on the dashboard. | **visualization_id** | **str** | Visualization object ID referenced by this insight widget. | **widget_id** | **str** | Widget object ID. | +**filters** | [**[FilterDefinition]**](FilterDefinition.md) | Filters currently applied to the dashboard. | [optional] **result_id** | **str** | Signed result ID for this widget's cached execution result. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] diff --git a/gooddata-api-client/docs/KnowledgeDocumentMetadataDto.md b/gooddata-api-client/docs/KnowledgeDocumentMetadataDto.md deleted file mode 100644 index 506d460bc..000000000 --- a/gooddata-api-client/docs/KnowledgeDocumentMetadataDto.md +++ /dev/null @@ -1,21 +0,0 @@ -# KnowledgeDocumentMetadataDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**created_at** | **str** | | -**created_by** | **str** | | -**filename** | **str** | | -**num_chunks** | **int** | | -**scopes** | **[str]** | | -**updated_at** | **str** | | -**updated_by** | **str** | | -**is_disabled** | **bool** | | [optional] -**title** | **str** | | [optional] -**workspace_id** | **str** | | [optional] -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/KnowledgeSearchResultDto.md b/gooddata-api-client/docs/KnowledgeSearchResultDto.md deleted file mode 100644 index 7e68dddbe..000000000 --- a/gooddata-api-client/docs/KnowledgeSearchResultDto.md +++ /dev/null @@ -1,20 +0,0 @@ -# KnowledgeSearchResultDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**chunk_index** | **int** | | -**content** | **str** | | -**filename** | **str** | | -**page_numbers** | **[int]** | | -**scopes** | **[str]** | | -**score** | **float** | | -**total_chunks** | **int** | | -**title** | **str** | | [optional] -**workspace_id** | **str** | | [optional] -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/ListKnowledgeDocumentsResponseDto.md b/gooddata-api-client/docs/ListKnowledgeDocumentsResponseDto.md deleted file mode 100644 index 4098dc245..000000000 --- a/gooddata-api-client/docs/ListKnowledgeDocumentsResponseDto.md +++ /dev/null @@ -1,14 +0,0 @@ -# ListKnowledgeDocumentsResponseDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**documents** | [**[KnowledgeDocumentMetadataDto]**](KnowledgeDocumentMetadataDto.md) | | -**next_page_token** | **str** | | [optional] -**total_count** | **int** | | [optional] -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/MetadataCheckApi.md b/gooddata-api-client/docs/MetadataCheckApi.md deleted file mode 100644 index e578d95f1..000000000 --- a/gooddata-api-client/docs/MetadataCheckApi.md +++ /dev/null @@ -1,70 +0,0 @@ -# gooddata_api_client.MetadataCheckApi - -All URIs are relative to *http://localhost* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**metadata_check_organization**](MetadataCheckApi.md#metadata_check_organization) | **POST** /api/v1/actions/organization/metadataCheck | (BETA) Check Organization Metadata Inconsistencies - - -# **metadata_check_organization** -> metadata_check_organization() - -(BETA) Check Organization Metadata Inconsistencies - -(BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. - -### Example - - -```python -import time -import gooddata_api_client -from gooddata_api_client.api import metadata_check_api -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = gooddata_api_client.Configuration( - host = "http://localhost" -) - - -# Enter a context with an instance of the API client -with gooddata_api_client.ApiClient() as api_client: - # Create an instance of the API class - api_instance = metadata_check_api.MetadataCheckApi(api_client) - - # example, this endpoint has no required or optional parameters - try: - # (BETA) Check Organization Metadata Inconsistencies - api_instance.metadata_check_organization() - except gooddata_api_client.ApiException as e: - print("Exception when calling MetadataCheckApi->metadata_check_organization: %s\n" % e) -``` - - -### Parameters -This endpoint does not need any parameter. - -### Return type - -void (empty response body) - -### Authorization - -No authorization required - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: Not defined - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/gooddata-api-client/docs/PatchKnowledgeDocumentRequestDto.md b/gooddata-api-client/docs/PatchKnowledgeDocumentRequestDto.md deleted file mode 100644 index 3e39d120e..000000000 --- a/gooddata-api-client/docs/PatchKnowledgeDocumentRequestDto.md +++ /dev/null @@ -1,14 +0,0 @@ -# PatchKnowledgeDocumentRequestDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**is_disabled** | **bool** | | [optional] -**scopes** | **[str]** | | [optional] -**title** | **str** | | [optional] -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/RichTextWidgetDescriptor.md b/gooddata-api-client/docs/RichTextWidgetDescriptor.md index f1635e7d7..b2cf0eba3 100644 --- a/gooddata-api-client/docs/RichTextWidgetDescriptor.md +++ b/gooddata-api-client/docs/RichTextWidgetDescriptor.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **title** | **str** | Widget title as displayed on the dashboard. | **widget_id** | **str** | Widget object ID. | +**filters** | [**[FilterDefinition]**](FilterDefinition.md) | Filters currently applied to the dashboard. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/gooddata-api-client/docs/SearchKnowledgeResponseDto.md b/gooddata-api-client/docs/SearchKnowledgeResponseDto.md deleted file mode 100644 index 939d9f028..000000000 --- a/gooddata-api-client/docs/SearchKnowledgeResponseDto.md +++ /dev/null @@ -1,13 +0,0 @@ -# SearchKnowledgeResponseDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**results** | [**[KnowledgeSearchResultDto]**](KnowledgeSearchResultDto.md) | | -**statistics** | [**SearchStatisticsDto**](SearchStatisticsDto.md) | | -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/SearchStatisticsDto.md b/gooddata-api-client/docs/SearchStatisticsDto.md deleted file mode 100644 index def7dbf8d..000000000 --- a/gooddata-api-client/docs/SearchStatisticsDto.md +++ /dev/null @@ -1,13 +0,0 @@ -# SearchStatisticsDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**average_similarity_score** | **float** | | -**total_results** | **int** | | -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/SmartFunctionsApi.md b/gooddata-api-client/docs/SmartFunctionsApi.md index 52750f80d..94171e0a0 100644 --- a/gooddata-api-client/docs/SmartFunctionsApi.md +++ b/gooddata-api-client/docs/SmartFunctionsApi.md @@ -108,6 +108,9 @@ with gooddata_api_client.ApiClient() as api_client: id="id_example", widgets=[ WidgetDescriptor( + filters=[ + ChangeAnalysisParamsFiltersInner(None), + ], title="title_example", widget_id="widget_id_example", widget_type="widget_type_example", @@ -311,6 +314,9 @@ with gooddata_api_client.ApiClient() as api_client: id="id_example", widgets=[ WidgetDescriptor( + filters=[ + ChangeAnalysisParamsFiltersInner(None), + ], title="title_example", widget_id="widget_id_example", widget_type="widget_type_example", diff --git a/gooddata-api-client/docs/UpsertKnowledgeDocumentRequestDto.md b/gooddata-api-client/docs/UpsertKnowledgeDocumentRequestDto.md deleted file mode 100644 index 9b3b3d247..000000000 --- a/gooddata-api-client/docs/UpsertKnowledgeDocumentRequestDto.md +++ /dev/null @@ -1,16 +0,0 @@ -# UpsertKnowledgeDocumentRequestDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**content** | **str** | | -**filename** | **str** | | -**page_boundaries** | **[int]** | | [optional] -**scopes** | **[str]** | | [optional] -**title** | **str** | | [optional] -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/UpsertKnowledgeDocumentResponseDto.md b/gooddata-api-client/docs/UpsertKnowledgeDocumentResponseDto.md deleted file mode 100644 index c9f448fd7..000000000 --- a/gooddata-api-client/docs/UpsertKnowledgeDocumentResponseDto.md +++ /dev/null @@ -1,15 +0,0 @@ -# UpsertKnowledgeDocumentResponseDto - - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**filename** | **str** | | -**message** | **str** | | -**num_chunks** | **int** | | -**success** | **bool** | | -**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/gooddata-api-client/docs/VisualizationSwitcherWidgetDescriptor.md b/gooddata-api-client/docs/VisualizationSwitcherWidgetDescriptor.md index 7ccd15a13..cbf737fca 100644 --- a/gooddata-api-client/docs/VisualizationSwitcherWidgetDescriptor.md +++ b/gooddata-api-client/docs/VisualizationSwitcherWidgetDescriptor.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **title** | **str** | Widget title as displayed on the dashboard. | **visualization_ids** | **[str]** | IDs of all visualizations available in the switcher. | **widget_id** | **str** | Widget object ID. | +**filters** | [**[FilterDefinition]**](FilterDefinition.md) | Filters currently applied to the dashboard. | [optional] **result_id** | **str** | Signed result ID for the currently active visualization's execution result. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] diff --git a/gooddata-api-client/docs/WidgetDescriptor.md b/gooddata-api-client/docs/WidgetDescriptor.md index 2a88d122d..8ece5c571 100644 --- a/gooddata-api-client/docs/WidgetDescriptor.md +++ b/gooddata-api-client/docs/WidgetDescriptor.md @@ -8,6 +8,7 @@ Name | Type | Description | Notes **title** | **str** | | **widget_id** | **str** | | **widget_type** | **str** | | +**filters** | [**[ChangeAnalysisParamsFiltersInner]**](ChangeAnalysisParamsFiltersInner.md) | | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/gooddata-api-client/gooddata_api_client/api/actions_api.py b/gooddata-api-client/gooddata_api_client/api/actions_api.py index 0b175a968..df95408ef 100644 --- a/gooddata-api-client/gooddata_api_client/api/actions_api.py +++ b/gooddata-api-client/gooddata_api_client/api/actions_api.py @@ -53,15 +53,12 @@ from gooddata_api_client.model.column_statistics_response import ColumnStatisticsResponse from gooddata_api_client.model.convert_geo_file_request import ConvertGeoFileRequest from gooddata_api_client.model.convert_geo_file_response import ConvertGeoFileResponse -from gooddata_api_client.model.create_knowledge_document_request_dto import CreateKnowledgeDocumentRequestDto -from gooddata_api_client.model.create_knowledge_document_response_dto import CreateKnowledgeDocumentResponseDto from gooddata_api_client.model.dashboard_permissions import DashboardPermissions from gooddata_api_client.model.dashboard_tabular_export_request import DashboardTabularExportRequest from gooddata_api_client.model.data_source_permission_assignment import DataSourcePermissionAssignment from gooddata_api_client.model.data_source_schemata import DataSourceSchemata from gooddata_api_client.model.declarative_model import DeclarativeModel from gooddata_api_client.model.delete_files_request import DeleteFilesRequest -from gooddata_api_client.model.delete_knowledge_document_response_dto import DeleteKnowledgeDocumentResponseDto from gooddata_api_client.model.dependent_entities_request import DependentEntitiesRequest from gooddata_api_client.model.dependent_entities_response import DependentEntitiesResponse from gooddata_api_client.model.elements_request import ElementsRequest @@ -89,8 +86,6 @@ from gooddata_api_client.model.key_drivers_request import KeyDriversRequest from gooddata_api_client.model.key_drivers_response import KeyDriversResponse from gooddata_api_client.model.key_drivers_result import KeyDriversResult -from gooddata_api_client.model.knowledge_document_metadata_dto import KnowledgeDocumentMetadataDto -from gooddata_api_client.model.list_knowledge_documents_response_dto import ListKnowledgeDocumentsResponseDto from gooddata_api_client.model.list_llm_provider_models_request import ListLlmProviderModelsRequest from gooddata_api_client.model.list_llm_provider_models_response import ListLlmProviderModelsResponse from gooddata_api_client.model.locale_request import LocaleRequest @@ -102,7 +97,6 @@ from gooddata_api_client.model.outlier_detection_request import OutlierDetectionRequest from gooddata_api_client.model.outlier_detection_response import OutlierDetectionResponse from gooddata_api_client.model.outlier_detection_result import OutlierDetectionResult -from gooddata_api_client.model.patch_knowledge_document_request_dto import PatchKnowledgeDocumentRequestDto from gooddata_api_client.model.platform_usage import PlatformUsage from gooddata_api_client.model.platform_usage_request import PlatformUsageRequest from gooddata_api_client.model.quality_issues_calculation_status_response import QualityIssuesCalculationStatusResponse @@ -118,7 +112,6 @@ from gooddata_api_client.model.scan_result_pdm import ScanResultPdm from gooddata_api_client.model.scan_sql_request import ScanSqlRequest from gooddata_api_client.model.scan_sql_response import ScanSqlResponse -from gooddata_api_client.model.search_knowledge_response_dto import SearchKnowledgeResponseDto from gooddata_api_client.model.search_request import SearchRequest from gooddata_api_client.model.search_result import SearchResult from gooddata_api_client.model.set_certification_request import SetCertificationRequest @@ -138,8 +131,6 @@ from gooddata_api_client.model.trigger_quality_issues_calculation_response import TriggerQualityIssuesCalculationResponse from gooddata_api_client.model.upload_file_response import UploadFileResponse from gooddata_api_client.model.upload_geo_collection_file_response import UploadGeoCollectionFileResponse -from gooddata_api_client.model.upsert_knowledge_document_request_dto import UpsertKnowledgeDocumentRequestDto -from gooddata_api_client.model.upsert_knowledge_document_response_dto import UpsertKnowledgeDocumentResponseDto from gooddata_api_client.model.validate_llm_endpoint_by_id_request import ValidateLLMEndpointByIdRequest from gooddata_api_client.model.validate_llm_endpoint_request import ValidateLLMEndpointRequest from gooddata_api_client.model.validate_llm_endpoint_response import ValidateLLMEndpointResponse @@ -1771,69 +1762,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.create_document_endpoint = _Endpoint( - settings={ - 'response_type': (CreateKnowledgeDocumentResponseDto,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents', - 'operation_id': 'create_document', - 'http_method': 'POST', - 'servers': None, - }, - params_map={ - 'all': [ - 'workspace_id', - 'create_knowledge_document_request_dto', - ], - 'required': [ - 'workspace_id', - 'create_knowledge_document_request_dto', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'workspace_id', - ] - }, - root_map={ - 'validations': { - ('workspace_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'workspace_id': - (str,), - 'create_knowledge_document_request_dto': - (CreateKnowledgeDocumentRequestDto,), - }, - 'attribute_map': { - 'workspace_id': 'workspaceId', - }, - 'location_map': { - 'workspace_id': 'path', - 'create_knowledge_document_request_dto': 'body', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [ - 'application/json' - ] - }, - api_client=api_client - ) self.create_image_export_endpoint = _Endpoint( settings={ 'response_type': (ExportResponse,), @@ -2286,68 +2214,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.delete_document_endpoint = _Endpoint( - settings={ - 'response_type': (DeleteKnowledgeDocumentResponseDto,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename}', - 'operation_id': 'delete_document', - 'http_method': 'DELETE', - 'servers': None, - }, - params_map={ - 'all': [ - 'workspace_id', - 'filename', - ], - 'required': [ - 'workspace_id', - 'filename', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'workspace_id', - ] - }, - root_map={ - 'validations': { - ('workspace_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'workspace_id': - (str,), - 'filename': - (str,), - }, - 'attribute_map': { - 'workspace_id': 'workspaceId', - 'filename': 'filename', - }, - 'location_map': { - 'workspace_id': 'path', - 'filename': 'path', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [], - }, - api_client=api_client - ) self.delete_files_endpoint = _Endpoint( settings={ 'response_type': None, @@ -3198,68 +3064,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.get_document_endpoint = _Endpoint( - settings={ - 'response_type': (KnowledgeDocumentMetadataDto,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename}', - 'operation_id': 'get_document', - 'http_method': 'GET', - 'servers': None, - }, - params_map={ - 'all': [ - 'workspace_id', - 'filename', - ], - 'required': [ - 'workspace_id', - 'filename', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'workspace_id', - ] - }, - root_map={ - 'validations': { - ('workspace_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'workspace_id': - (str,), - 'filename': - (str,), - }, - 'attribute_map': { - 'workspace_id': 'workspaceId', - 'filename': 'filename', - }, - 'location_map': { - 'workspace_id': 'path', - 'filename': 'path', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [], - }, - api_client=api_client - ) self.get_exported_file_endpoint = _Endpoint( settings={ 'response_type': (file_type,), @@ -4374,93 +4178,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.list_documents_endpoint = _Endpoint( - settings={ - 'response_type': (ListKnowledgeDocumentsResponseDto,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents', - 'operation_id': 'list_documents', - 'http_method': 'GET', - 'servers': None, - }, - params_map={ - 'all': [ - 'workspace_id', - 'scopes', - 'size', - 'page_token', - 'meta_include', - 'state', - 'query', - ], - 'required': [ - 'workspace_id', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'workspace_id', - ] - }, - root_map={ - 'validations': { - ('workspace_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'workspace_id': - (str,), - 'scopes': - ([str],), - 'size': - (int,), - 'page_token': - (str,), - 'meta_include': - (str,), - 'state': - (str,), - 'query': - (str,), - }, - 'attribute_map': { - 'workspace_id': 'workspaceId', - 'scopes': 'scopes', - 'size': 'size', - 'page_token': 'pageToken', - 'meta_include': 'metaInclude', - 'state': 'state', - 'query': 'query', - }, - 'location_map': { - 'workspace_id': 'path', - 'scopes': 'query', - 'size': 'query', - 'page_token': 'query', - 'meta_include': 'query', - 'state': 'query', - 'query': 'query', - }, - 'collection_format_map': { - 'scopes': 'multi', - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [], - }, - api_client=api_client - ) self.list_files_endpoint = _Endpoint( settings={ 'response_type': ([GdStorageFile],), @@ -5101,46 +4818,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.metadata_check_organization_endpoint = _Endpoint( - settings={ - 'response_type': None, - 'auth': [], - 'endpoint_path': '/api/v1/actions/organization/metadataCheck', - 'operation_id': 'metadata_check_organization', - 'http_method': 'POST', - 'servers': None, - }, - params_map={ - 'all': [ - ], - 'required': [], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - ] - }, - root_map={ - 'validations': { - }, - 'allowed_values': { - }, - 'openapi_types': { - }, - 'attribute_map': { - }, - 'location_map': { - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [], - 'content_type': [], - }, - api_client=api_client - ) self.metadata_sync_endpoint = _Endpoint( settings={ 'response_type': None, @@ -5467,75 +5144,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.patch_document_endpoint = _Endpoint( - settings={ - 'response_type': (KnowledgeDocumentMetadataDto,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename}', - 'operation_id': 'patch_document', - 'http_method': 'PATCH', - 'servers': None, - }, - params_map={ - 'all': [ - 'workspace_id', - 'filename', - 'patch_knowledge_document_request_dto', - ], - 'required': [ - 'workspace_id', - 'filename', - 'patch_knowledge_document_request_dto', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'workspace_id', - ] - }, - root_map={ - 'validations': { - ('workspace_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'workspace_id': - (str,), - 'filename': - (str,), - 'patch_knowledge_document_request_dto': - (PatchKnowledgeDocumentRequestDto,), - }, - 'attribute_map': { - 'workspace_id': 'workspaceId', - 'filename': 'filename', - }, - 'location_map': { - 'workspace_id': 'path', - 'filename': 'path', - 'patch_knowledge_document_request_dto': 'body', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [ - 'application/json' - ] - }, - api_client=api_client - ) self.pause_organization_automations_endpoint = _Endpoint( settings={ 'response_type': None, @@ -6357,79 +5965,16 @@ def __init__(self, api_client=None): }, 'openapi_types': { 'data_source_id': - (str,), - 'scan_request': - (ScanRequest,), - }, - 'attribute_map': { - 'data_source_id': 'dataSourceId', - }, - 'location_map': { - 'data_source_id': 'path', - 'scan_request': 'body', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [ - 'application/json' - ] - }, - api_client=api_client - ) - self.scan_sql_endpoint = _Endpoint( - settings={ - 'response_type': (ScanSqlResponse,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/dataSources/{dataSourceId}/scanSql', - 'operation_id': 'scan_sql', - 'http_method': 'POST', - 'servers': None, - }, - params_map={ - 'all': [ - 'data_source_id', - 'scan_sql_request', - ], - 'required': [ - 'data_source_id', - 'scan_sql_request', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'data_source_id', - ] - }, - root_map={ - 'validations': { - ('data_source_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'data_source_id': - (str,), - 'scan_sql_request': - (ScanSqlRequest,), + (str,), + 'scan_request': + (ScanRequest,), }, 'attribute_map': { 'data_source_id': 'dataSourceId', }, 'location_map': { 'data_source_id': 'path', - 'scan_sql_request': 'body', + 'scan_request': 'body', }, 'collection_format_map': { } @@ -6444,38 +5989,35 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.search_knowledge_endpoint = _Endpoint( + self.scan_sql_endpoint = _Endpoint( settings={ - 'response_type': (SearchKnowledgeResponseDto,), + 'response_type': (ScanSqlResponse,), 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/search', - 'operation_id': 'search_knowledge', - 'http_method': 'GET', + 'endpoint_path': '/api/v1/actions/dataSources/{dataSourceId}/scanSql', + 'operation_id': 'scan_sql', + 'http_method': 'POST', 'servers': None, }, params_map={ 'all': [ - 'workspace_id', - 'query', - 'limit', - 'min_score', - 'scopes', + 'data_source_id', + 'scan_sql_request', ], 'required': [ - 'workspace_id', - 'query', + 'data_source_id', + 'scan_sql_request', ], 'nullable': [ ], 'enum': [ ], 'validation': [ - 'workspace_id', + 'data_source_id', ] }, root_map={ 'validations': { - ('workspace_id',): { + ('data_source_id',): { 'regex': { 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 @@ -6485,40 +6027,28 @@ def __init__(self, api_client=None): 'allowed_values': { }, 'openapi_types': { - 'workspace_id': - (str,), - 'query': + 'data_source_id': (str,), - 'limit': - (int,), - 'min_score': - (float,), - 'scopes': - ([str],), + 'scan_sql_request': + (ScanSqlRequest,), }, 'attribute_map': { - 'workspace_id': 'workspaceId', - 'query': 'query', - 'limit': 'limit', - 'min_score': 'minScore', - 'scopes': 'scopes', + 'data_source_id': 'dataSourceId', }, 'location_map': { - 'workspace_id': 'path', - 'query': 'query', - 'limit': 'query', - 'min_score': 'query', - 'scopes': 'query', + 'data_source_id': 'path', + 'scan_sql_request': 'body', }, 'collection_format_map': { - 'scopes': 'multi', } }, headers_map={ 'accept': [ 'application/json' ], - 'content_type': [], + 'content_type': [ + 'application/json' + ] }, api_client=api_client ) @@ -7671,69 +7201,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.upsert_document_endpoint = _Endpoint( - settings={ - 'response_type': (UpsertKnowledgeDocumentResponseDto,), - 'auth': [], - 'endpoint_path': '/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents', - 'operation_id': 'upsert_document', - 'http_method': 'PUT', - 'servers': None, - }, - params_map={ - 'all': [ - 'workspace_id', - 'upsert_knowledge_document_request_dto', - ], - 'required': [ - 'workspace_id', - 'upsert_knowledge_document_request_dto', - ], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - 'workspace_id', - ] - }, - root_map={ - 'validations': { - ('workspace_id',): { - - 'regex': { - 'pattern': r'^(?!\.)[.A-Za-z0-9_-]{1,255}$', # noqa: E501 - }, - }, - }, - 'allowed_values': { - }, - 'openapi_types': { - 'workspace_id': - (str,), - 'upsert_knowledge_document_request_dto': - (UpsertKnowledgeDocumentRequestDto,), - }, - 'attribute_map': { - 'workspace_id': 'workspaceId', - }, - 'location_map': { - 'workspace_id': 'path', - 'upsert_knowledge_document_request_dto': 'body', - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [ - 'application/json' - ] - }, - api_client=api_client - ) self.validate_llm_endpoint_endpoint = _Endpoint( settings={ 'response_type': (ValidateLLMEndpointResponse,), @@ -10208,92 +9675,6 @@ def create_dashboard_export_request( dashboard_tabular_export_request return self.create_dashboard_export_request_endpoint.call_with_http_info(**kwargs) - def create_document( - self, - workspace_id, - create_knowledge_document_request_dto, - **kwargs - ): - """create_document # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.create_document(workspace_id, create_knowledge_document_request_dto, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): Workspace identifier - create_knowledge_document_request_dto (CreateKnowledgeDocumentRequestDto): - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - CreateKnowledgeDocumentResponseDto - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - kwargs['create_knowledge_document_request_dto'] = \ - create_knowledge_document_request_dto - return self.create_document_endpoint.call_with_http_info(**kwargs) - def create_image_export( self, workspace_id, @@ -10829,91 +10210,7 @@ def custom_geo_collection_staging_upload( >>> result = thread.get() Args: - file (file_type): The geo collection file to upload. Supported formats: GeoParquet (.parquet), GeoJSON (.geojson, .json), ESRI Shapefile (.zip). - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - UploadGeoCollectionFileResponse - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['file'] = \ - file - return self.custom_geo_collection_staging_upload_endpoint.call_with_http_info(**kwargs) - - def dashboard_permissions( - self, - workspace_id, - dashboard_id, - **kwargs - ): - """Get Dashboard Permissions # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.dashboard_permissions(workspace_id, dashboard_id, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): - dashboard_id (str): + file (file_type): The geo collection file to upload. Supported formats: GeoParquet (.parquet), GeoJSON (.geojson, .json), ESRI Shapefile (.zip). Keyword Args: _return_http_data_only (bool): response data without head status @@ -10948,7 +10245,7 @@ def dashboard_permissions( async_req (bool): execute request asynchronously Returns: - DashboardPermissions + UploadGeoCollectionFileResponse If the method is called asynchronously, returns the request thread. """ @@ -10977,29 +10274,27 @@ def dashboard_permissions( '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - kwargs['dashboard_id'] = \ - dashboard_id - return self.dashboard_permissions_endpoint.call_with_http_info(**kwargs) + kwargs['file'] = \ + file + return self.custom_geo_collection_staging_upload_endpoint.call_with_http_info(**kwargs) - def delete_document( + def dashboard_permissions( self, workspace_id, - filename, + dashboard_id, **kwargs ): - """delete_document # noqa: E501 + """Get Dashboard Permissions # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.delete_document(workspace_id, filename, async_req=True) + >>> thread = api.dashboard_permissions(workspace_id, dashboard_id, async_req=True) >>> result = thread.get() Args: - workspace_id (str): Workspace identifier - filename (str): + workspace_id (str): + dashboard_id (str): Keyword Args: _return_http_data_only (bool): response data without head status @@ -11034,7 +10329,7 @@ def delete_document( async_req (bool): execute request asynchronously Returns: - DeleteKnowledgeDocumentResponseDto + DashboardPermissions If the method is called asynchronously, returns the request thread. """ @@ -11065,9 +10360,9 @@ def delete_document( kwargs['_request_auths'] = kwargs.get('_request_auths', None) kwargs['workspace_id'] = \ workspace_id - kwargs['filename'] = \ - filename - return self.delete_document_endpoint.call_with_http_info(**kwargs) + kwargs['dashboard_id'] = \ + dashboard_id + return self.dashboard_permissions_endpoint.call_with_http_info(**kwargs) def delete_files( self, @@ -12280,92 +11575,6 @@ def get_dependent_entities_graph_from_entry_points( dependent_entities_request return self.get_dependent_entities_graph_from_entry_points_endpoint.call_with_http_info(**kwargs) - def get_document( - self, - workspace_id, - filename, - **kwargs - ): - """get_document # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.get_document(workspace_id, filename, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): Workspace identifier - filename (str): - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - KnowledgeDocumentMetadataDto - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - kwargs['filename'] = \ - filename - return self.get_document_endpoint.call_with_http_info(**kwargs) - def get_exported_file( self, workspace_id, @@ -14001,94 +13210,6 @@ def key_driver_analysis_result( result_id return self.key_driver_analysis_result_endpoint.call_with_http_info(**kwargs) - def list_documents( - self, - workspace_id, - **kwargs - ): - """list_documents # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.list_documents(workspace_id, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): Workspace identifier - - Keyword Args: - scopes ([str]): [optional] - size (int): [optional] if omitted the server will use the default value of 50 - page_token (str): [optional] - meta_include (str): [optional] - state (str): [optional] - query (str): [optional] - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - ListKnowledgeDocumentsResponseDto - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - return self.list_documents_endpoint.call_with_http_info(**kwargs) - def list_files( self, data_source_id, @@ -14944,97 +14065,16 @@ def mark_as_read_notification_all( ): """Mark all notifications as read. # noqa: E501 - Mark all user in-platform notifications as read. # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.mark_as_read_notification_all(async_req=True) - >>> result = thread.get() - - - Keyword Args: - workspace_id (str): Workspace ID where to mark notifications as read.. [optional] - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - None - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - return self.mark_as_read_notification_all_endpoint.call_with_http_info(**kwargs) - - def memory_created_by_users( - self, - workspace_id, - **kwargs - ): - """Get AI Memory CreatedBy Users # noqa: E501 - - Returns a list of Users who created any memory item for this workspace # noqa: E501 + Mark all user in-platform notifications as read. # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.memory_created_by_users(workspace_id, async_req=True) + >>> thread = api.mark_as_read_notification_all(async_req=True) >>> result = thread.get() - Args: - workspace_id (str): Workspace identifier Keyword Args: + workspace_id (str): Workspace ID where to mark notifications as read.. [optional] _return_http_data_only (bool): response data without head status code and headers. Default is True. _preload_content (bool): if False, the urllib3.HTTPResponse object @@ -15067,7 +14107,7 @@ def memory_created_by_users( async_req (bool): execute request asynchronously Returns: - MemoryItemCreatedByUsers + None If the method is called asynchronously, returns the request thread. """ @@ -15096,23 +14136,24 @@ def memory_created_by_users( '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - return self.memory_created_by_users_endpoint.call_with_http_info(**kwargs) + return self.mark_as_read_notification_all_endpoint.call_with_http_info(**kwargs) - def metadata_check_organization( + def memory_created_by_users( self, + workspace_id, **kwargs ): - """(BETA) Check Organization Metadata Inconsistencies # noqa: E501 + """Get AI Memory CreatedBy Users # noqa: E501 - (BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. # noqa: E501 + Returns a list of Users who created any memory item for this workspace # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.metadata_check_organization(async_req=True) + >>> thread = api.memory_created_by_users(workspace_id, async_req=True) >>> result = thread.get() + Args: + workspace_id (str): Workspace identifier Keyword Args: _return_http_data_only (bool): response data without head status @@ -15147,7 +14188,7 @@ def metadata_check_organization( async_req (bool): execute request asynchronously Returns: - None + MemoryItemCreatedByUsers If the method is called asynchronously, returns the request thread. """ @@ -15176,7 +14217,9 @@ def metadata_check_organization( '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) - return self.metadata_check_organization_endpoint.call_with_http_info(**kwargs) + kwargs['workspace_id'] = \ + workspace_id + return self.memory_created_by_users_endpoint.call_with_http_info(**kwargs) def metadata_sync( self, @@ -15682,96 +14725,6 @@ def particular_platform_usage( platform_usage_request return self.particular_platform_usage_endpoint.call_with_http_info(**kwargs) - def patch_document( - self, - workspace_id, - filename, - patch_knowledge_document_request_dto, - **kwargs - ): - """patch_document # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.patch_document(workspace_id, filename, patch_knowledge_document_request_dto, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): Workspace identifier - filename (str): - patch_knowledge_document_request_dto (PatchKnowledgeDocumentRequestDto): - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - KnowledgeDocumentMetadataDto - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - kwargs['filename'] = \ - filename - kwargs['patch_knowledge_document_request_dto'] = \ - patch_knowledge_document_request_dto - return self.patch_document_endpoint.call_with_http_info(**kwargs) - def pause_organization_automations( self, organization_automation_management_bulk_request, @@ -17127,95 +16080,6 @@ def scan_sql( scan_sql_request return self.scan_sql_endpoint.call_with_http_info(**kwargs) - def search_knowledge( - self, - workspace_id, - query, - **kwargs - ): - """search_knowledge # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.search_knowledge(workspace_id, query, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): Workspace identifier - query (str): - - Keyword Args: - limit (int): [optional] if omitted the server will use the default value of 10 - min_score (float): [optional] if omitted the server will use the default value of 0.0 - scopes ([str]): [optional] - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - SearchKnowledgeResponseDto - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - kwargs['query'] = \ - query - return self.search_knowledge_endpoint.call_with_http_info(**kwargs) - def set_certification( self, workspace_id, @@ -19064,92 +17928,6 @@ def unsubscribe_workspace_automations( workspace_id return self.unsubscribe_workspace_automations_endpoint.call_with_http_info(**kwargs) - def upsert_document( - self, - workspace_id, - upsert_knowledge_document_request_dto, - **kwargs - ): - """upsert_document # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.upsert_document(workspace_id, upsert_knowledge_document_request_dto, async_req=True) - >>> result = thread.get() - - Args: - workspace_id (str): Workspace identifier - upsert_knowledge_document_request_dto (UpsertKnowledgeDocumentRequestDto): - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - UpsertKnowledgeDocumentResponseDto - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - kwargs['workspace_id'] = \ - workspace_id - kwargs['upsert_knowledge_document_request_dto'] = \ - upsert_knowledge_document_request_dto - return self.upsert_document_endpoint.call_with_http_info(**kwargs) - def validate_llm_endpoint( self, validate_llm_endpoint_request, diff --git a/gooddata-api-client/gooddata_api_client/api/ai_api.py b/gooddata-api-client/gooddata_api_client/api/ai_api.py index 06064a62c..175ff634a 100644 --- a/gooddata-api-client/gooddata_api_client/api/ai_api.py +++ b/gooddata-api-client/gooddata_api_client/api/ai_api.py @@ -767,46 +767,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.metadata_check_organization_endpoint = _Endpoint( - settings={ - 'response_type': None, - 'auth': [], - 'endpoint_path': '/api/v1/actions/organization/metadataCheck', - 'operation_id': 'metadata_check_organization', - 'http_method': 'POST', - 'servers': None, - }, - params_map={ - 'all': [ - ], - 'required': [], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - ] - }, - root_map={ - 'validations': { - }, - 'allowed_values': { - }, - 'openapi_types': { - }, - 'attribute_map': { - }, - 'location_map': { - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [], - 'content_type': [], - }, - api_client=api_client - ) self.metadata_sync_endpoint = _Endpoint( settings={ 'response_type': None, @@ -2085,84 +2045,6 @@ def get_entity_memory_items( object_id return self.get_entity_memory_items_endpoint.call_with_http_info(**kwargs) - def metadata_check_organization( - self, - **kwargs - ): - """(BETA) Check Organization Metadata Inconsistencies # noqa: E501 - - (BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.metadata_check_organization(async_req=True) - >>> result = thread.get() - - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - None - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - return self.metadata_check_organization_endpoint.call_with_http_info(**kwargs) - def metadata_sync( self, workspace_id, diff --git a/gooddata-api-client/gooddata_api_client/api/metadata_check_api.py b/gooddata-api-client/gooddata_api_client/api/metadata_check_api.py deleted file mode 100644 index 6266c839d..000000000 --- a/gooddata-api-client/gooddata_api_client/api/metadata_check_api.py +++ /dev/null @@ -1,156 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.api_client import ApiClient, Endpoint as _Endpoint -from gooddata_api_client.model_utils import ( # noqa: F401 - check_allowed_values, - check_validations, - date, - datetime, - file_type, - none_type, - validate_and_convert_types -) - - -class MetadataCheckApi(object): - """NOTE: This class is auto generated by OpenAPI Generator - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - def __init__(self, api_client=None): - if api_client is None: - api_client = ApiClient() - self.api_client = api_client - self.metadata_check_organization_endpoint = _Endpoint( - settings={ - 'response_type': None, - 'auth': [], - 'endpoint_path': '/api/v1/actions/organization/metadataCheck', - 'operation_id': 'metadata_check_organization', - 'http_method': 'POST', - 'servers': None, - }, - params_map={ - 'all': [ - ], - 'required': [], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - ] - }, - root_map={ - 'validations': { - }, - 'allowed_values': { - }, - 'openapi_types': { - }, - 'attribute_map': { - }, - 'location_map': { - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [], - 'content_type': [], - }, - api_client=api_client - ) - - def metadata_check_organization( - self, - **kwargs - ): - """(BETA) Check Organization Metadata Inconsistencies # noqa: E501 - - (BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK. # noqa: E501 - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.metadata_check_organization(async_req=True) - >>> result = thread.get() - - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - None - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - return self.metadata_check_organization_endpoint.call_with_http_info(**kwargs) - diff --git a/gooddata-api-client/gooddata_api_client/apis/__init__.py b/gooddata-api-client/gooddata_api_client/apis/__init__.py index e929c492a..7171af4c6 100644 --- a/gooddata-api-client/gooddata_api_client/apis/__init__.py +++ b/gooddata-api-client/gooddata_api_client/apis/__init__.py @@ -60,7 +60,6 @@ from gooddata_api_client.api.llm_providers_api import LLMProvidersApi from gooddata_api_client.api.labels_api import LabelsApi from gooddata_api_client.api.manage_permissions_api import ManagePermissionsApi -from gooddata_api_client.api.metadata_check_api import MetadataCheckApi from gooddata_api_client.api.metadata_sync_api import MetadataSyncApi from gooddata_api_client.api.metrics_api import MetricsApi from gooddata_api_client.api.notification_channels_api import NotificationChannelsApi diff --git a/gooddata-api-client/gooddata_api_client/model/search_statistics_dto.py b/gooddata-api-client/gooddata_api_client/model/ai_usage_metadata_item.py similarity index 89% rename from gooddata-api-client/gooddata_api_client/model/search_statistics_dto.py rename to gooddata-api-client/gooddata_api_client/model/ai_usage_metadata_item.py index 4a36c3d12..2acd8baed 100644 --- a/gooddata-api-client/gooddata_api_client/model/search_statistics_dto.py +++ b/gooddata-api-client/gooddata_api_client/model/ai_usage_metadata_item.py @@ -31,7 +31,7 @@ -class SearchStatisticsDto(ModelNormal): +class AiUsageMetadataItem(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -82,8 +82,9 @@ def openapi_types(): and the value is attribute type. """ return { - 'average_similarity_score': (float,), # noqa: E501 - 'total_results': (int,), # noqa: E501 + 'counter_type': (str,), # noqa: E501 + 'current_value': (int,), # noqa: E501 + 'limit': (int,), # noqa: E501 } @cached_property @@ -92,8 +93,9 @@ def discriminator(): attribute_map = { - 'average_similarity_score': 'averageSimilarityScore', # noqa: E501 - 'total_results': 'totalResults', # noqa: E501 + 'counter_type': 'counterType', # noqa: E501 + 'current_value': 'currentValue', # noqa: E501 + 'limit': 'limit', # noqa: E501 } read_only_vars = { @@ -103,12 +105,13 @@ def discriminator(): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, average_similarity_score, total_results, *args, **kwargs): # noqa: E501 - """SearchStatisticsDto - a model defined in OpenAPI + def _from_openapi_data(cls, counter_type, current_value, limit, *args, **kwargs): # noqa: E501 + """AiUsageMetadataItem - a model defined in OpenAPI Args: - average_similarity_score (float): - total_results (int): + counter_type (str): Type of usage counter, e.g. AI_QUERIES. + current_value (int): Current usage value after this request. + limit (int): Entitlement limit. 0 means unlimited. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -172,8 +175,9 @@ def _from_openapi_data(cls, average_similarity_score, total_results, *args, **kw self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.average_similarity_score = average_similarity_score - self.total_results = total_results + self.counter_type = counter_type + self.current_value = current_value + self.limit = limit for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -194,12 +198,13 @@ def _from_openapi_data(cls, average_similarity_score, total_results, *args, **kw ]) @convert_js_args_to_python_args - def __init__(self, average_similarity_score, total_results, *args, **kwargs): # noqa: E501 - """SearchStatisticsDto - a model defined in OpenAPI + def __init__(self, counter_type, current_value, limit, *args, **kwargs): # noqa: E501 + """AiUsageMetadataItem - a model defined in OpenAPI Args: - average_similarity_score (float): - total_results (int): + counter_type (str): Type of usage counter, e.g. AI_QUERIES. + current_value (int): Current usage value after this request. + limit (int): Entitlement limit. 0 means unlimited. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -261,8 +266,9 @@ def __init__(self, average_similarity_score, total_results, *args, **kwargs): # self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.average_similarity_score = average_similarity_score - self.total_results = total_results + self.counter_type = counter_type + self.current_value = current_value + self.limit = limit for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/gooddata-api-client/gooddata_api_client/model/api_entitlement.py b/gooddata-api-client/gooddata_api_client/model/api_entitlement.py index a7616d086..7aad935da 100644 --- a/gooddata-api-client/gooddata_api_client/model/api_entitlement.py +++ b/gooddata-api-client/gooddata_api_client/model/api_entitlement.py @@ -85,6 +85,10 @@ class ApiEntitlement(ModelNormal): 'AUDITLOGGING': "AuditLogging", 'CONTROLLEDFEATUREROLLOUT': "ControlledFeatureRollout", 'AILAKE': "AiLake", + 'AIMODULE': "AiModule", + 'AIQUERYLIMIT': "AiQueryLimit", + 'AIKNOWLEDGESTORAGELIMIT': "AiKnowledgeStorageLimit", + 'AIAGENTLIMIT': "AiAgentLimit", }, } diff --git a/gooddata-api-client/gooddata_api_client/model/chat_result.py b/gooddata-api-client/gooddata_api_client/model/chat_result.py index 71ae8579d..c7084a256 100644 --- a/gooddata-api-client/gooddata_api_client/model/chat_result.py +++ b/gooddata-api-client/gooddata_api_client/model/chat_result.py @@ -31,6 +31,7 @@ def lazy_import(): + from gooddata_api_client.model.ai_usage_metadata_item import AiUsageMetadataItem from gooddata_api_client.model.change_analysis_params import ChangeAnalysisParams from gooddata_api_client.model.created_visualizations import CreatedVisualizations from gooddata_api_client.model.found_objects import FoundObjects @@ -38,6 +39,7 @@ def lazy_import(): from gooddata_api_client.model.route_result import RouteResult from gooddata_api_client.model.search_result import SearchResult from gooddata_api_client.model.tool_call_event_result import ToolCallEventResult + globals()['AiUsageMetadataItem'] = AiUsageMetadataItem globals()['ChangeAnalysisParams'] = ChangeAnalysisParams globals()['CreatedVisualizations'] = CreatedVisualizations globals()['FoundObjects'] = FoundObjects @@ -111,6 +113,7 @@ def openapi_types(): 'text_response': (str,), # noqa: E501 'thread_id_suffix': (str,), # noqa: E501 'tool_call_events': ([ToolCallEventResult],), # noqa: E501 + 'usage': ([AiUsageMetadataItem],), # noqa: E501 } @cached_property @@ -130,6 +133,7 @@ def discriminator(): 'text_response': 'textResponse', # noqa: E501 'thread_id_suffix': 'threadIdSuffix', # noqa: E501 'tool_call_events': 'toolCallEvents', # noqa: E501 + 'usage': 'usage', # noqa: E501 } read_only_vars = { @@ -184,6 +188,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 text_response (str): Text response for general questions.. [optional] # noqa: E501 thread_id_suffix (str): Chat History thread suffix appended to ID generated by backend. Enables more chat windows.. [optional] # noqa: E501 tool_call_events ([ToolCallEventResult]): Tool call events emitted during the agentic loop (only present when GEN_AI_YIELD_TOOL_CALL_EVENTS is enabled).. [optional] # noqa: E501 + usage ([AiUsageMetadataItem]): AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit).. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -280,6 +285,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 text_response (str): Text response for general questions.. [optional] # noqa: E501 thread_id_suffix (str): Chat History thread suffix appended to ID generated by backend. Enables more chat windows.. [optional] # noqa: E501 tool_call_events ([ToolCallEventResult]): Tool call events emitted during the agentic loop (only present when GEN_AI_YIELD_TOOL_CALL_EVENTS is enabled).. [optional] # noqa: E501 + usage ([AiUsageMetadataItem]): AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit).. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/gooddata-api-client/gooddata_api_client/model/create_knowledge_document_request_dto.py b/gooddata-api-client/gooddata_api_client/model/create_knowledge_document_request_dto.py deleted file mode 100644 index 7271da96c..000000000 --- a/gooddata-api-client/gooddata_api_client/model/create_knowledge_document_request_dto.py +++ /dev/null @@ -1,288 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class CreateKnowledgeDocumentRequestDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'content': (str,), # noqa: E501 - 'filename': (str,), # noqa: E501 - 'page_boundaries': ([int],), # noqa: E501 - 'scopes': ([str],), # noqa: E501 - 'title': (str,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'content': 'content', # noqa: E501 - 'filename': 'filename', # noqa: E501 - 'page_boundaries': 'pageBoundaries', # noqa: E501 - 'scopes': 'scopes', # noqa: E501 - 'title': 'title', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, content, filename, *args, **kwargs): # noqa: E501 - """CreateKnowledgeDocumentRequestDto - a model defined in OpenAPI - - Args: - content (str): - filename (str): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - page_boundaries ([int]): [optional] # noqa: E501 - scopes ([str]): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.content = content - self.filename = filename - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, content, filename, *args, **kwargs): # noqa: E501 - """CreateKnowledgeDocumentRequestDto - a model defined in OpenAPI - - Args: - content (str): - filename (str): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - page_boundaries ([int]): [optional] # noqa: E501 - scopes ([str]): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.content = content - self.filename = filename - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/create_knowledge_document_response_dto.py b/gooddata-api-client/gooddata_api_client/model/create_knowledge_document_response_dto.py deleted file mode 100644 index be932eab3..000000000 --- a/gooddata-api-client/gooddata_api_client/model/create_knowledge_document_response_dto.py +++ /dev/null @@ -1,288 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class CreateKnowledgeDocumentResponseDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'filename': (str,), # noqa: E501 - 'message': (str,), # noqa: E501 - 'num_chunks': (int,), # noqa: E501 - 'success': (bool,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'filename': 'filename', # noqa: E501 - 'message': 'message', # noqa: E501 - 'num_chunks': 'numChunks', # noqa: E501 - 'success': 'success', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, filename, message, num_chunks, success, *args, **kwargs): # noqa: E501 - """CreateKnowledgeDocumentResponseDto - a model defined in OpenAPI - - Args: - filename (str): - message (str): - num_chunks (int): - success (bool): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.filename = filename - self.message = message - self.num_chunks = num_chunks - self.success = success - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, filename, message, num_chunks, success, *args, **kwargs): # noqa: E501 - """CreateKnowledgeDocumentResponseDto - a model defined in OpenAPI - - Args: - filename (str): - message (str): - num_chunks (int): - success (bool): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.filename = filename - self.message = message - self.num_chunks = num_chunks - self.success = success - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/delete_knowledge_document_response_dto.py b/gooddata-api-client/gooddata_api_client/model/delete_knowledge_document_response_dto.py deleted file mode 100644 index 6508e4243..000000000 --- a/gooddata-api-client/gooddata_api_client/model/delete_knowledge_document_response_dto.py +++ /dev/null @@ -1,276 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class DeleteKnowledgeDocumentResponseDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'message': (str,), # noqa: E501 - 'success': (bool,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'message': 'message', # noqa: E501 - 'success': 'success', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, message, success, *args, **kwargs): # noqa: E501 - """DeleteKnowledgeDocumentResponseDto - a model defined in OpenAPI - - Args: - message (str): - success (bool): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.message = message - self.success = success - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, message, success, *args, **kwargs): # noqa: E501 - """DeleteKnowledgeDocumentResponseDto - a model defined in OpenAPI - - Args: - message (str): - success (bool): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.message = message - self.success = success - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/entitlements_request.py b/gooddata-api-client/gooddata_api_client/model/entitlements_request.py index 282b0759f..3a404afbd 100644 --- a/gooddata-api-client/gooddata_api_client/model/entitlements_request.py +++ b/gooddata-api-client/gooddata_api_client/model/entitlements_request.py @@ -85,6 +85,10 @@ class EntitlementsRequest(ModelNormal): 'AUDITLOGGING': "AuditLogging", 'CONTROLLEDFEATUREROLLOUT': "ControlledFeatureRollout", 'AILAKE': "AiLake", + 'AIMODULE': "AiModule", + 'AIQUERYLIMIT': "AiQueryLimit", + 'AIKNOWLEDGESTORAGELIMIT': "AiKnowledgeStorageLimit", + 'AIAGENTLIMIT': "AiAgentLimit", }, } diff --git a/gooddata-api-client/gooddata_api_client/model/insight_widget_descriptor.py b/gooddata-api-client/gooddata_api_client/model/insight_widget_descriptor.py index 85d699c7a..aa9fdc674 100644 --- a/gooddata-api-client/gooddata_api_client/model/insight_widget_descriptor.py +++ b/gooddata-api-client/gooddata_api_client/model/insight_widget_descriptor.py @@ -30,6 +30,10 @@ from gooddata_api_client.exceptions import ApiAttributeError +def lazy_import(): + from gooddata_api_client.model.filter_definition import FilterDefinition + globals()['FilterDefinition'] = FilterDefinition + class InsightWidgetDescriptor(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -67,6 +71,7 @@ def additional_properties_type(): This must be a method because a model may have properties that are of type self, this must run after the class is loaded """ + lazy_import() return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -81,10 +86,12 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'title': (str,), # noqa: E501 'visualization_id': (str,), # noqa: E501 'widget_id': (str,), # noqa: E501 + 'filters': ([FilterDefinition],), # noqa: E501 'result_id': (str,), # noqa: E501 } @@ -97,6 +104,7 @@ def discriminator(): 'title': 'title', # noqa: E501 'visualization_id': 'visualizationId', # noqa: E501 'widget_id': 'widgetId', # noqa: E501 + 'filters': 'filters', # noqa: E501 'result_id': 'resultId', # noqa: E501 } @@ -146,6 +154,7 @@ def _from_openapi_data(cls, title, visualization_id, widget_id, *args, **kwargs) Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([FilterDefinition]): Filters currently applied to the dashboard.. [optional] # noqa: E501 result_id (str): Signed result ID for this widget's cached execution result.. [optional] # noqa: E501 """ @@ -240,6 +249,7 @@ def __init__(self, title, visualization_id, widget_id, *args, **kwargs): # noqa Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([FilterDefinition]): Filters currently applied to the dashboard.. [optional] # noqa: E501 result_id (str): Signed result ID for this widget's cached execution result.. [optional] # noqa: E501 """ diff --git a/gooddata-api-client/gooddata_api_client/model/knowledge_document_metadata_dto.py b/gooddata-api-client/gooddata_api_client/model/knowledge_document_metadata_dto.py deleted file mode 100644 index 0b6ad1732..000000000 --- a/gooddata-api-client/gooddata_api_client/model/knowledge_document_metadata_dto.py +++ /dev/null @@ -1,318 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class KnowledgeDocumentMetadataDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'created_at': (str,), # noqa: E501 - 'created_by': (str,), # noqa: E501 - 'filename': (str,), # noqa: E501 - 'num_chunks': (int,), # noqa: E501 - 'scopes': ([str],), # noqa: E501 - 'updated_at': (str,), # noqa: E501 - 'updated_by': (str,), # noqa: E501 - 'is_disabled': (bool,), # noqa: E501 - 'title': (str,), # noqa: E501 - 'workspace_id': (str,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'created_at': 'createdAt', # noqa: E501 - 'created_by': 'createdBy', # noqa: E501 - 'filename': 'filename', # noqa: E501 - 'num_chunks': 'numChunks', # noqa: E501 - 'scopes': 'scopes', # noqa: E501 - 'updated_at': 'updatedAt', # noqa: E501 - 'updated_by': 'updatedBy', # noqa: E501 - 'is_disabled': 'isDisabled', # noqa: E501 - 'title': 'title', # noqa: E501 - 'workspace_id': 'workspaceId', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, created_at, created_by, filename, num_chunks, scopes, updated_at, updated_by, *args, **kwargs): # noqa: E501 - """KnowledgeDocumentMetadataDto - a model defined in OpenAPI - - Args: - created_at (str): - created_by (str): - filename (str): - num_chunks (int): - scopes ([str]): - updated_at (str): - updated_by (str): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - is_disabled (bool): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - workspace_id (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.created_at = created_at - self.created_by = created_by - self.filename = filename - self.num_chunks = num_chunks - self.scopes = scopes - self.updated_at = updated_at - self.updated_by = updated_by - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, created_at, created_by, filename, num_chunks, scopes, updated_at, updated_by, *args, **kwargs): # noqa: E501 - """KnowledgeDocumentMetadataDto - a model defined in OpenAPI - - Args: - created_at (str): - created_by (str): - filename (str): - num_chunks (int): - scopes ([str]): - updated_at (str): - updated_by (str): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - is_disabled (bool): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - workspace_id (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.created_at = created_at - self.created_by = created_by - self.filename = filename - self.num_chunks = num_chunks - self.scopes = scopes - self.updated_at = updated_at - self.updated_by = updated_by - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/knowledge_search_result_dto.py b/gooddata-api-client/gooddata_api_client/model/knowledge_search_result_dto.py deleted file mode 100644 index de120c6cd..000000000 --- a/gooddata-api-client/gooddata_api_client/model/knowledge_search_result_dto.py +++ /dev/null @@ -1,314 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class KnowledgeSearchResultDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'chunk_index': (int,), # noqa: E501 - 'content': (str,), # noqa: E501 - 'filename': (str,), # noqa: E501 - 'page_numbers': ([int],), # noqa: E501 - 'scopes': ([str],), # noqa: E501 - 'score': (float,), # noqa: E501 - 'total_chunks': (int,), # noqa: E501 - 'title': (str,), # noqa: E501 - 'workspace_id': (str,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'chunk_index': 'chunkIndex', # noqa: E501 - 'content': 'content', # noqa: E501 - 'filename': 'filename', # noqa: E501 - 'page_numbers': 'pageNumbers', # noqa: E501 - 'scopes': 'scopes', # noqa: E501 - 'score': 'score', # noqa: E501 - 'total_chunks': 'totalChunks', # noqa: E501 - 'title': 'title', # noqa: E501 - 'workspace_id': 'workspaceId', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, chunk_index, content, filename, page_numbers, scopes, score, total_chunks, *args, **kwargs): # noqa: E501 - """KnowledgeSearchResultDto - a model defined in OpenAPI - - Args: - chunk_index (int): - content (str): - filename (str): - page_numbers ([int]): - scopes ([str]): - score (float): - total_chunks (int): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - title (str): [optional] # noqa: E501 - workspace_id (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.chunk_index = chunk_index - self.content = content - self.filename = filename - self.page_numbers = page_numbers - self.scopes = scopes - self.score = score - self.total_chunks = total_chunks - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, chunk_index, content, filename, page_numbers, scopes, score, total_chunks, *args, **kwargs): # noqa: E501 - """KnowledgeSearchResultDto - a model defined in OpenAPI - - Args: - chunk_index (int): - content (str): - filename (str): - page_numbers ([int]): - scopes ([str]): - score (float): - total_chunks (int): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - title (str): [optional] # noqa: E501 - workspace_id (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.chunk_index = chunk_index - self.content = content - self.filename = filename - self.page_numbers = page_numbers - self.scopes = scopes - self.score = score - self.total_chunks = total_chunks - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/list_knowledge_documents_response_dto.py b/gooddata-api-client/gooddata_api_client/model/list_knowledge_documents_response_dto.py deleted file mode 100644 index 9826850d1..000000000 --- a/gooddata-api-client/gooddata_api_client/model/list_knowledge_documents_response_dto.py +++ /dev/null @@ -1,284 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - -def lazy_import(): - from gooddata_api_client.model.knowledge_document_metadata_dto import KnowledgeDocumentMetadataDto - globals()['KnowledgeDocumentMetadataDto'] = KnowledgeDocumentMetadataDto - - -class ListKnowledgeDocumentsResponseDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - lazy_import() - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - lazy_import() - return { - 'documents': ([KnowledgeDocumentMetadataDto],), # noqa: E501 - 'next_page_token': (str,), # noqa: E501 - 'total_count': (int,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'documents': 'documents', # noqa: E501 - 'next_page_token': 'nextPageToken', # noqa: E501 - 'total_count': 'totalCount', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, documents, *args, **kwargs): # noqa: E501 - """ListKnowledgeDocumentsResponseDto - a model defined in OpenAPI - - Args: - documents ([KnowledgeDocumentMetadataDto]): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - next_page_token (str): [optional] # noqa: E501 - total_count (int): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.documents = documents - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, documents, *args, **kwargs): # noqa: E501 - """ListKnowledgeDocumentsResponseDto - a model defined in OpenAPI - - Args: - documents ([KnowledgeDocumentMetadataDto]): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - next_page_token (str): [optional] # noqa: E501 - total_count (int): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.documents = documents - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/patch_knowledge_document_request_dto.py b/gooddata-api-client/gooddata_api_client/model/patch_knowledge_document_request_dto.py deleted file mode 100644 index 509be98a5..000000000 --- a/gooddata-api-client/gooddata_api_client/model/patch_knowledge_document_request_dto.py +++ /dev/null @@ -1,272 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class PatchKnowledgeDocumentRequestDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'is_disabled': (bool,), # noqa: E501 - 'scopes': ([str],), # noqa: E501 - 'title': (str,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'is_disabled': 'isDisabled', # noqa: E501 - 'scopes': 'scopes', # noqa: E501 - 'title': 'title', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 - """PatchKnowledgeDocumentRequestDto - a model defined in OpenAPI - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - is_disabled (bool): [optional] # noqa: E501 - scopes ([str]): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 - """PatchKnowledgeDocumentRequestDto - a model defined in OpenAPI - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - is_disabled (bool): [optional] # noqa: E501 - scopes ([str]): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/rich_text_widget_descriptor.py b/gooddata-api-client/gooddata_api_client/model/rich_text_widget_descriptor.py index a3b6581f3..70a13aba0 100644 --- a/gooddata-api-client/gooddata_api_client/model/rich_text_widget_descriptor.py +++ b/gooddata-api-client/gooddata_api_client/model/rich_text_widget_descriptor.py @@ -30,6 +30,10 @@ from gooddata_api_client.exceptions import ApiAttributeError +def lazy_import(): + from gooddata_api_client.model.filter_definition import FilterDefinition + globals()['FilterDefinition'] = FilterDefinition + class RichTextWidgetDescriptor(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -67,6 +71,7 @@ def additional_properties_type(): This must be a method because a model may have properties that are of type self, this must run after the class is loaded """ + lazy_import() return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -81,9 +86,11 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'title': (str,), # noqa: E501 'widget_id': (str,), # noqa: E501 + 'filters': ([FilterDefinition],), # noqa: E501 } @cached_property @@ -94,6 +101,7 @@ def discriminator(): attribute_map = { 'title': 'title', # noqa: E501 'widget_id': 'widgetId', # noqa: E501 + 'filters': 'filters', # noqa: E501 } read_only_vars = { @@ -141,6 +149,7 @@ def _from_openapi_data(cls, title, widget_id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([FilterDefinition]): Filters currently applied to the dashboard.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -232,6 +241,7 @@ def __init__(self, title, widget_id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([FilterDefinition]): Filters currently applied to the dashboard.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/gooddata-api-client/gooddata_api_client/model/search_knowledge_response_dto.py b/gooddata-api-client/gooddata_api_client/model/search_knowledge_response_dto.py deleted file mode 100644 index 30ca7572a..000000000 --- a/gooddata-api-client/gooddata_api_client/model/search_knowledge_response_dto.py +++ /dev/null @@ -1,284 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - -def lazy_import(): - from gooddata_api_client.model.knowledge_search_result_dto import KnowledgeSearchResultDto - from gooddata_api_client.model.search_statistics_dto import SearchStatisticsDto - globals()['KnowledgeSearchResultDto'] = KnowledgeSearchResultDto - globals()['SearchStatisticsDto'] = SearchStatisticsDto - - -class SearchKnowledgeResponseDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - lazy_import() - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - lazy_import() - return { - 'results': ([KnowledgeSearchResultDto],), # noqa: E501 - 'statistics': (SearchStatisticsDto,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'results': 'results', # noqa: E501 - 'statistics': 'statistics', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, results, statistics, *args, **kwargs): # noqa: E501 - """SearchKnowledgeResponseDto - a model defined in OpenAPI - - Args: - results ([KnowledgeSearchResultDto]): - statistics (SearchStatisticsDto): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.results = results - self.statistics = statistics - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, results, statistics, *args, **kwargs): # noqa: E501 - """SearchKnowledgeResponseDto - a model defined in OpenAPI - - Args: - results ([KnowledgeSearchResultDto]): - statistics (SearchStatisticsDto): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.results = results - self.statistics = statistics - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_request_dto.py b/gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_request_dto.py deleted file mode 100644 index 1795c08e6..000000000 --- a/gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_request_dto.py +++ /dev/null @@ -1,288 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class UpsertKnowledgeDocumentRequestDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'content': (str,), # noqa: E501 - 'filename': (str,), # noqa: E501 - 'page_boundaries': ([int],), # noqa: E501 - 'scopes': ([str],), # noqa: E501 - 'title': (str,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'content': 'content', # noqa: E501 - 'filename': 'filename', # noqa: E501 - 'page_boundaries': 'pageBoundaries', # noqa: E501 - 'scopes': 'scopes', # noqa: E501 - 'title': 'title', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, content, filename, *args, **kwargs): # noqa: E501 - """UpsertKnowledgeDocumentRequestDto - a model defined in OpenAPI - - Args: - content (str): - filename (str): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - page_boundaries ([int]): [optional] # noqa: E501 - scopes ([str]): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.content = content - self.filename = filename - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, content, filename, *args, **kwargs): # noqa: E501 - """UpsertKnowledgeDocumentRequestDto - a model defined in OpenAPI - - Args: - content (str): - filename (str): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - page_boundaries ([int]): [optional] # noqa: E501 - scopes ([str]): [optional] # noqa: E501 - title (str): [optional] # noqa: E501 - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.content = content - self.filename = filename - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_response_dto.py b/gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_response_dto.py deleted file mode 100644 index 19e0fb39c..000000000 --- a/gooddata-api-client/gooddata_api_client/model/upsert_knowledge_document_response_dto.py +++ /dev/null @@ -1,288 +0,0 @@ -""" - OpenAPI definition - - No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 - - The version of the OpenAPI document: v0 - Contact: support@gooddata.com - Generated by: https://openapi-generator.tech -""" - - -import re # noqa: F401 -import sys # noqa: F401 - -from gooddata_api_client.model_utils import ( # noqa: F401 - ApiTypeError, - ModelComposed, - ModelNormal, - ModelSimple, - cached_property, - change_keys_js_to_python, - convert_js_args_to_python_args, - date, - datetime, - file_type, - none_type, - validate_get_composed_info, - OpenApiModel -) -from gooddata_api_client.exceptions import ApiAttributeError - - - -class UpsertKnowledgeDocumentResponseDto(ModelNormal): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - - Attributes: - allowed_values (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - with a capitalized key describing the allowed value and an allowed - value. These dicts store the allowed enum values. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - discriminator_value_class_map (dict): A dict to go from the discriminator - variable value to the discriminator class name. - validations (dict): The key is the tuple path to the attribute - and the for var_name this is (var_name,). The value is a dict - that stores validations for max_length, min_length, max_items, - min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, - inclusive_minimum, and regex. - additional_properties_type (tuple): A tuple of classes accepted - as additional properties values. - """ - - allowed_values = { - } - - validations = { - } - - @cached_property - def additional_properties_type(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - """ - return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 - - _nullable = False - - @cached_property - def openapi_types(): - """ - This must be a method because a model may have properties that are - of type self, this must run after the class is loaded - - Returns - openapi_types (dict): The key is attribute name - and the value is attribute type. - """ - return { - 'filename': (str,), # noqa: E501 - 'message': (str,), # noqa: E501 - 'num_chunks': (int,), # noqa: E501 - 'success': (bool,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'filename': 'filename', # noqa: E501 - 'message': 'message', # noqa: E501 - 'num_chunks': 'numChunks', # noqa: E501 - 'success': 'success', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, filename, message, num_chunks, success, *args, **kwargs): # noqa: E501 - """UpsertKnowledgeDocumentResponseDto - a model defined in OpenAPI - - Args: - filename (str): - message (str): - num_chunks (int): - success (bool): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', True) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - self = super(OpenApiModel, cls).__new__(cls) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.filename = filename - self.message = message - self.num_chunks = num_chunks - self.success = success - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - return self - - required_properties = set([ - '_data_store', - '_check_type', - '_spec_property_naming', - '_path_to_item', - '_configuration', - '_visited_composed_classes', - ]) - - @convert_js_args_to_python_args - def __init__(self, filename, message, num_chunks, success, *args, **kwargs): # noqa: E501 - """UpsertKnowledgeDocumentResponseDto - a model defined in OpenAPI - - Args: - filename (str): - message (str): - num_chunks (int): - success (bool): - - Keyword Args: - _check_type (bool): if True, values for parameters in openapi_types - will be type checked and a TypeError will be - raised if the wrong type is input. - Defaults to True - _path_to_item (tuple/list): This is a list of keys or values to - drill down to the model in received_data - when deserializing a response - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _configuration (Configuration): the instance to use when - deserializing a file_type parameter. - If passed, type conversion is attempted - If omitted no type conversion is done. - _visited_composed_classes (tuple): This stores a tuple of - classes that we have traveled through so that - if we see that class again we will not use its - discriminator again. - When traveling through a discriminator, the - composed schema that is - is traveled through is added to this set. - For example if Animal has a discriminator - petType and we pass in "Dog", and the class Dog - allOf includes Animal, we move through Animal - once using the discriminator, and pick Dog. - Then in Dog, we will make an instance of the - Animal class but this time we won't travel - through its discriminator because we passed in - _visited_composed_classes = (Animal,) - """ - - _check_type = kwargs.pop('_check_type', True) - _spec_property_naming = kwargs.pop('_spec_property_naming', False) - _path_to_item = kwargs.pop('_path_to_item', ()) - _configuration = kwargs.pop('_configuration', None) - _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) - - if args: - for arg in args: - if isinstance(arg, dict): - kwargs.update(arg) - else: - raise ApiTypeError( - "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( - args, - self.__class__.__name__, - ), - path_to_item=_path_to_item, - valid_classes=(self.__class__,), - ) - - self._data_store = {} - self._check_type = _check_type - self._spec_property_naming = _spec_property_naming - self._path_to_item = _path_to_item - self._configuration = _configuration - self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - - self.filename = filename - self.message = message - self.num_chunks = num_chunks - self.success = success - for var_name, var_value in kwargs.items(): - if var_name not in self.attribute_map and \ - self._configuration is not None and \ - self._configuration.discard_unknown_keys and \ - self.additional_properties_type is None: - # discard variable. - continue - setattr(self, var_name, var_value) - if var_name in self.read_only_vars: - raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " - f"class with read only attributes.") diff --git a/gooddata-api-client/gooddata_api_client/model/visualization_switcher_widget_descriptor.py b/gooddata-api-client/gooddata_api_client/model/visualization_switcher_widget_descriptor.py index b93e60126..e129ab942 100644 --- a/gooddata-api-client/gooddata_api_client/model/visualization_switcher_widget_descriptor.py +++ b/gooddata-api-client/gooddata_api_client/model/visualization_switcher_widget_descriptor.py @@ -30,6 +30,10 @@ from gooddata_api_client.exceptions import ApiAttributeError +def lazy_import(): + from gooddata_api_client.model.filter_definition import FilterDefinition + globals()['FilterDefinition'] = FilterDefinition + class VisualizationSwitcherWidgetDescriptor(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -67,6 +71,7 @@ def additional_properties_type(): This must be a method because a model may have properties that are of type self, this must run after the class is loaded """ + lazy_import() return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -81,11 +86,13 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'active_visualization_id': (str,), # noqa: E501 'title': (str,), # noqa: E501 'visualization_ids': ([str],), # noqa: E501 'widget_id': (str,), # noqa: E501 + 'filters': ([FilterDefinition],), # noqa: E501 'result_id': (str,), # noqa: E501 } @@ -99,6 +106,7 @@ def discriminator(): 'title': 'title', # noqa: E501 'visualization_ids': 'visualizationIds', # noqa: E501 'widget_id': 'widgetId', # noqa: E501 + 'filters': 'filters', # noqa: E501 'result_id': 'resultId', # noqa: E501 } @@ -149,6 +157,7 @@ def _from_openapi_data(cls, active_visualization_id, title, visualization_ids, w Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([FilterDefinition]): Filters currently applied to the dashboard.. [optional] # noqa: E501 result_id (str): Signed result ID for the currently active visualization's execution result.. [optional] # noqa: E501 """ @@ -245,6 +254,7 @@ def __init__(self, active_visualization_id, title, visualization_ids, widget_id, Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([FilterDefinition]): Filters currently applied to the dashboard.. [optional] # noqa: E501 result_id (str): Signed result ID for the currently active visualization's execution result.. [optional] # noqa: E501 """ diff --git a/gooddata-api-client/gooddata_api_client/model/widget_descriptor.py b/gooddata-api-client/gooddata_api_client/model/widget_descriptor.py index 5e079f366..083c8048e 100644 --- a/gooddata-api-client/gooddata_api_client/model/widget_descriptor.py +++ b/gooddata-api-client/gooddata_api_client/model/widget_descriptor.py @@ -30,6 +30,10 @@ from gooddata_api_client.exceptions import ApiAttributeError +def lazy_import(): + from gooddata_api_client.model.change_analysis_params_filters_inner import ChangeAnalysisParamsFiltersInner + globals()['ChangeAnalysisParamsFiltersInner'] = ChangeAnalysisParamsFiltersInner + class WidgetDescriptor(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. @@ -67,6 +71,7 @@ def additional_properties_type(): This must be a method because a model may have properties that are of type self, this must run after the class is loaded """ + lazy_import() return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 _nullable = False @@ -81,10 +86,12 @@ def openapi_types(): openapi_types (dict): The key is attribute name and the value is attribute type. """ + lazy_import() return { 'title': (str,), # noqa: E501 'widget_id': (str,), # noqa: E501 'widget_type': (str,), # noqa: E501 + 'filters': ([ChangeAnalysisParamsFiltersInner],), # noqa: E501 } @cached_property @@ -99,6 +106,7 @@ def discriminator(): 'title': 'title', # noqa: E501 'widget_id': 'widgetId', # noqa: E501 'widget_type': 'widgetType', # noqa: E501 + 'filters': 'filters', # noqa: E501 } read_only_vars = { @@ -147,6 +155,7 @@ def _from_openapi_data(cls, title, widget_id, widget_type, *args, **kwargs): # Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([ChangeAnalysisParamsFiltersInner]): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -240,6 +249,7 @@ def __init__(self, title, widget_id, widget_type, *args, **kwargs): # noqa: E50 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + filters ([ChangeAnalysisParamsFiltersInner]): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/packages/gooddata-sdk/src/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py b/packages/gooddata-sdk/src/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py index 43b420966..de2e01a34 100644 --- a/packages/gooddata-sdk/src/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py +++ b/packages/gooddata-sdk/src/gooddata_sdk/catalog/workspace/declarative_model/workspace/analytics_model/analytics_model.py @@ -18,6 +18,7 @@ from gooddata_api_client.model.declarative_visualization_object import DeclarativeVisualizationObject from gooddata_sdk.catalog.base import Base +from gooddata_sdk.catalog.parameter import CatalogParameter from gooddata_sdk.catalog.permission.declarative_model.permission import ( CatalogDeclarativeDashboardPermissionsForAssignee, CatalogDeclarativeDashboardPermissionsForAssigneeRule, @@ -81,6 +82,7 @@ class CatalogDeclarativeAnalyticsLayer(Base): visualization_objects: list[CatalogDeclarativeVisualizationObject] = field(factory=list) export_definitions: list[CatalogDeclarativeExportDefinition] = field(factory=list) memory_items: list[CatalogDeclarativeMemoryItem] = field(factory=list) + parameters: list[CatalogParameter] = field(factory=list) @staticmethod def client_class() -> type[DeclarativeAnalyticsLayer]: diff --git a/schemas/gooddata-afm-client.json b/schemas/gooddata-afm-client.json index 739dbea47..c6f5ecb07 100644 --- a/schemas/gooddata-afm-client.json +++ b/schemas/gooddata-afm-client.json @@ -441,6 +441,31 @@ ], "type": "object" }, + "AiUsageMetadataItem": { + "description": "AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit).", + "properties": { + "counterType": { + "description": "Type of usage counter, e.g. AI_QUERIES.", + "type": "string" + }, + "currentValue": { + "description": "Current usage value after this request.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Entitlement limit. 0 means unlimited.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "counterType", + "currentValue", + "limit" + ], + "type": "object" + }, "AllTimeDateFilter": { "description": "An all-time date filter that does not restrict by date range. Controls how rows with empty (null/missing) date values are handled.", "properties": { @@ -1572,6 +1597,13 @@ "$ref": "#/components/schemas/ToolCallEventResult" }, "type": "array" + }, + "usage": { + "description": "AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit).", + "items": { + "$ref": "#/components/schemas/AiUsageMetadataItem" + }, + "type": "array" } }, "type": "object" @@ -1832,61 +1864,6 @@ ], "type": "object" }, - "CreateKnowledgeDocumentRequestDto": { - "properties": { - "content": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "pageBoundaries": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - } - }, - "required": [ - "content", - "filename" - ], - "type": "object" - }, - "CreateKnowledgeDocumentResponseDto": { - "properties": { - "filename": { - "type": "string" - }, - "message": { - "type": "string" - }, - "numChunks": { - "format": "int32", - "type": "integer" - }, - "success": { - "type": "boolean" - } - }, - "required": [ - "filename", - "message", - "numChunks", - "success" - ], - "type": "object" - }, "CreatedVisualization": { "description": "List of created visualization objects", "properties": { @@ -2198,21 +2175,6 @@ ], "type": "object" }, - "DeleteKnowledgeDocumentResponseDto": { - "properties": { - "message": { - "type": "string" - }, - "success": { - "type": "boolean" - } - }, - "required": [ - "message", - "success" - ], - "type": "object" - }, "DependsOn": { "allOf": [ { @@ -3184,6 +3146,13 @@ "InsightWidgetDescriptor": { "description": "Insight widget displaying a visualization.", "properties": { + "filters": { + "description": "Filters currently applied to the dashboard.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + }, + "type": "array" + }, "resultId": { "description": "Signed result ID for this widget's cached execution result.", "type": "string" @@ -3333,105 +3302,6 @@ ], "type": "object" }, - "KnowledgeDocumentMetadataDto": { - "properties": { - "createdAt": { - "type": "string" - }, - "createdBy": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "isDisabled": { - "type": "boolean" - }, - "numChunks": { - "format": "int32", - "type": "integer" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "workspaceId": { - "type": "string" - } - }, - "required": [ - "createdAt", - "createdBy", - "filename", - "numChunks", - "scopes", - "updatedAt", - "updatedBy" - ], - "type": "object" - }, - "KnowledgeSearchResultDto": { - "properties": { - "chunkIndex": { - "format": "int32", - "type": "integer" - }, - "content": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "pageNumbers": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "score": { - "format": "float", - "type": "number" - }, - "title": { - "type": "string" - }, - "totalChunks": { - "format": "int32", - "type": "integer" - }, - "workspaceId": { - "type": "string" - } - }, - "required": [ - "chunkIndex", - "content", - "filename", - "pageNumbers", - "scopes", - "score", - "totalChunks" - ], - "type": "object" - }, "ListDatabaseInstancesResponse": { "description": "Paged response for listing AI Lake database instances", "properties": { @@ -3453,27 +3323,6 @@ ], "type": "object" }, - "ListKnowledgeDocumentsResponseDto": { - "properties": { - "documents": { - "items": { - "$ref": "#/components/schemas/KnowledgeDocumentMetadataDto" - }, - "type": "array" - }, - "nextPageToken": { - "type": "string" - }, - "totalCount": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "documents" - ], - "type": "object" - }, "ListLlmProviderModelsRequest": { "properties": { "providerConfig": { @@ -4303,23 +4152,6 @@ ], "type": "object" }, - "PatchKnowledgeDocumentRequestDto": { - "properties": { - "isDisabled": { - "type": "boolean" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - } - }, - "type": "object" - }, "PendingOperation": { "allOf": [ { @@ -5074,6 +4906,13 @@ "RichTextWidgetDescriptor": { "description": "Rich text widget displaying static content. Has no execution result.", "properties": { + "filters": { + "description": "Filters currently applied to the dashboard.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + }, + "type": "array" + }, "title": { "description": "Widget title as displayed on the dashboard.", "type": "string" @@ -5154,24 +4993,6 @@ ], "type": "object" }, - "SearchKnowledgeResponseDto": { - "properties": { - "results": { - "items": { - "$ref": "#/components/schemas/KnowledgeSearchResultDto" - }, - "type": "array" - }, - "statistics": { - "$ref": "#/components/schemas/SearchStatisticsDto" - } - }, - "required": [ - "results", - "statistics" - ], - "type": "object" - }, "SearchRelationshipObject": { "properties": { "sourceObjectId": { @@ -5409,23 +5230,6 @@ ], "type": "object" }, - "SearchStatisticsDto": { - "properties": { - "averageSimilarityScore": { - "format": "float", - "type": "number" - }, - "totalResults": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "averageSimilarityScore", - "totalResults" - ], - "type": "object" - }, "ServerSentEventChatResult": { "type": "object" }, @@ -6007,90 +5811,35 @@ "Unit": { "type": "object" }, - "UpsertKnowledgeDocumentRequestDto": { + "UserContext": { + "description": "User context with ambient UI state (view) and explicitly referenced objects.", "properties": { - "content": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "pageBoundaries": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" + "activeObject": { + "$ref": "#/components/schemas/ActiveObjectIdentification" }, - "scopes": { + "referencedObjects": { + "description": "Groups of explicitly referenced objects, each optionally scoped by a context (e.g. a dashboard context with widget references).", "items": { - "type": "string" + "$ref": "#/components/schemas/ObjectReferenceGroup" }, "type": "array" }, - "title": { - "type": "string" + "view": { + "$ref": "#/components/schemas/UIContext" } }, - "required": [ - "content", - "filename" - ], "type": "object" }, - "UpsertKnowledgeDocumentResponseDto": { + "ValidateByItem": { + "nullable": true, "properties": { - "filename": { + "id": { + "description": "Specifies entity used for valid elements computation.", "type": "string" }, - "message": { - "type": "string" - }, - "numChunks": { - "format": "int32", - "type": "integer" - }, - "success": { - "type": "boolean" - } - }, - "required": [ - "filename", - "message", - "numChunks", - "success" - ], - "type": "object" - }, - "UserContext": { - "description": "User context with ambient UI state (view) and explicitly referenced objects.", - "properties": { - "activeObject": { - "$ref": "#/components/schemas/ActiveObjectIdentification" - }, - "referencedObjects": { - "description": "Groups of explicitly referenced objects, each optionally scoped by a context (e.g. a dashboard context with widget references).", - "items": { - "$ref": "#/components/schemas/ObjectReferenceGroup" - }, - "type": "array" - }, - "view": { - "$ref": "#/components/schemas/UIContext" - } - }, - "type": "object" - }, - "ValidateByItem": { - "nullable": true, - "properties": { - "id": { - "description": "Specifies entity used for valid elements computation.", - "type": "string" - }, - "type": { - "description": "Specifies entity type which could be label, attribute, fact, or metric.", - "pattern": "^(label)|(attribute)|(fact)|(metric)$", + "type": { + "description": "Specifies entity type which could be label, attribute, fact, or metric.", + "pattern": "^(label)|(attribute)|(fact)|(metric)$", "type": "string" } }, @@ -6196,6 +5945,13 @@ "description": "ID of the currently active visualization in the switcher.", "type": "string" }, + "filters": { + "description": "Filters currently applied to the dashboard.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + }, + "type": "array" + }, "resultId": { "description": "Signed result ID for the currently active visualization's execution result.", "type": "string" @@ -6300,6 +6056,22 @@ "propertyName": "widgetType" }, "properties": { + "filters": { + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AbstractMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/FilterDefinitionForSimpleMeasure" + }, + { + "$ref": "#/components/schemas/InlineFilterDefinition" + } + ] + }, + "type": "array" + }, "title": { "type": "string" }, @@ -7097,368 +6869,6 @@ ] } }, - "/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents": { - "get": { - "operationId": "listDocuments", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "query", - "name": "scopes", - "required": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - { - "in": "query", - "name": "size", - "required": false, - "schema": { - "default": 50, - "format": "int32", - "type": "integer" - } - }, - { - "in": "query", - "name": "pageToken", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "metaInclude", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "state", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListKnowledgeDocumentsResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "post": { - "operationId": "createDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateKnowledgeDocumentRequestDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateKnowledgeDocumentResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "put": { - "operationId": "upsertDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpsertKnowledgeDocumentRequestDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpsertKnowledgeDocumentResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - } - }, - "/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename}": { - "delete": { - "operationId": "deleteDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteKnowledgeDocumentResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "get": { - "operationId": "getDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KnowledgeDocumentMetadataDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "patch": { - "operationId": "patchDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PatchKnowledgeDocumentRequestDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KnowledgeDocumentMetadataDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - } - }, - "/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/search": { - "get": { - "operationId": "searchKnowledge", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "query", - "name": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "default": 10, - "format": "int32", - "type": "integer" - } - }, - { - "in": "query", - "name": "minScore", - "required": false, - "schema": { - "default": 0.0, - "format": "double", - "type": "number" - } - }, - { - "in": "query", - "name": "scopes", - "required": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SearchKnowledgeResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - } - }, "/api/v1/actions/workspaces/{workspaceId}/ai/memory/createdBy": { "get": { "description": "Returns a list of Users who created any memory item for this workspace", diff --git a/schemas/gooddata-api-client.json b/schemas/gooddata-api-client.json index 7c685c327..05ebfbf27 100644 --- a/schemas/gooddata-api-client.json +++ b/schemas/gooddata-api-client.json @@ -4964,6 +4964,31 @@ ], "type": "object" }, + "AiUsageMetadataItem": { + "description": "AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit).", + "properties": { + "counterType": { + "description": "Type of usage counter, e.g. AI_QUERIES.", + "type": "string" + }, + "currentValue": { + "description": "Current usage value after this request.", + "format": "int64", + "type": "integer" + }, + "limit": { + "description": "Entitlement limit. 0 means unlimited.", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "counterType", + "currentValue", + "limit" + ], + "type": "object" + }, "AlertAfm": { "properties": { "attributes": { @@ -5569,7 +5594,11 @@ "FederatedIdentityManagement", "AuditLogging", "ControlledFeatureRollout", - "AiLake" + "AiLake", + "AiModule", + "AiQueryLimit", + "AiKnowledgeStorageLimit", + "AiAgentLimit" ], "type": "string" }, @@ -6892,6 +6921,13 @@ "$ref": "#/components/schemas/ToolCallEventResult" }, "type": "array" + }, + "usage": { + "description": "AI usage metadata returned after the interaction (e.g. current query count vs. entitlement limit).", + "items": { + "$ref": "#/components/schemas/AiUsageMetadataItem" + }, + "type": "array" } }, "type": "object" @@ -7434,61 +7470,6 @@ }, "type": "object" }, - "CreateKnowledgeDocumentRequestDto": { - "properties": { - "content": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "pageBoundaries": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - } - }, - "required": [ - "content", - "filename" - ], - "type": "object" - }, - "CreateKnowledgeDocumentResponseDto": { - "properties": { - "filename": { - "type": "string" - }, - "message": { - "type": "string" - }, - "numChunks": { - "format": "int32", - "type": "integer" - }, - "success": { - "type": "boolean" - } - }, - "required": [ - "filename", - "message", - "numChunks", - "success" - ], - "type": "object" - }, "CreatedVisualization": { "description": "List of created visualization objects", "properties": { @@ -12424,21 +12405,6 @@ ], "type": "object" }, - "DeleteKnowledgeDocumentResponseDto": { - "properties": { - "message": { - "type": "string" - }, - "success": { - "type": "boolean" - } - }, - "required": [ - "message", - "success" - ], - "type": "object" - }, "DependentEntitiesGraph": { "properties": { "edges": { @@ -12856,7 +12822,11 @@ "FederatedIdentityManagement", "AuditLogging", "ControlledFeatureRollout", - "AiLake" + "AiLake", + "AiModule", + "AiQueryLimit", + "AiKnowledgeStorageLimit", + "AiAgentLimit" ], "type": "string" }, @@ -14506,6 +14476,13 @@ "InsightWidgetDescriptor": { "description": "Insight widget displaying a visualization.", "properties": { + "filters": { + "description": "Filters currently applied to the dashboard.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + }, + "type": "array" + }, "resultId": { "description": "Signed result ID for this widget's cached execution result.", "type": "string" @@ -31478,105 +31455,6 @@ ], "type": "object" }, - "KnowledgeDocumentMetadataDto": { - "properties": { - "createdAt": { - "type": "string" - }, - "createdBy": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "isDisabled": { - "type": "boolean" - }, - "numChunks": { - "format": "int32", - "type": "integer" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "updatedBy": { - "type": "string" - }, - "workspaceId": { - "type": "string" - } - }, - "required": [ - "createdAt", - "createdBy", - "filename", - "numChunks", - "scopes", - "updatedAt", - "updatedBy" - ], - "type": "object" - }, - "KnowledgeSearchResultDto": { - "properties": { - "chunkIndex": { - "format": "int32", - "type": "integer" - }, - "content": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "pageNumbers": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "score": { - "format": "float", - "type": "number" - }, - "title": { - "type": "string" - }, - "totalChunks": { - "format": "int32", - "type": "integer" - }, - "workspaceId": { - "type": "string" - } - }, - "required": [ - "chunkIndex", - "content", - "filename", - "pageNumbers", - "scopes", - "score", - "totalChunks" - ], - "type": "object" - }, "LabelIdentifier": { "description": "A label identifier.", "properties": { @@ -31622,27 +31500,6 @@ ], "type": "object" }, - "ListKnowledgeDocumentsResponseDto": { - "properties": { - "documents": { - "items": { - "$ref": "#/components/schemas/KnowledgeDocumentMetadataDto" - }, - "type": "array" - }, - "nextPageToken": { - "type": "string" - }, - "totalCount": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "documents" - ], - "type": "object" - }, "ListLinks": { "allOf": [ { @@ -32947,23 +32804,6 @@ ], "type": "object" }, - "PatchKnowledgeDocumentRequestDto": { - "properties": { - "isDisabled": { - "type": "boolean" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - } - }, - "type": "object" - }, "PdfTableStyle": { "deprecated": true, "description": "Custom CSS styles for the table. (PDF, HTML)", @@ -34389,6 +34229,13 @@ "RichTextWidgetDescriptor": { "description": "Rich text widget displaying static content. Has no execution result.", "properties": { + "filters": { + "description": "Filters currently applied to the dashboard.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + }, + "type": "array" + }, "title": { "description": "Widget title as displayed on the dashboard.", "type": "string" @@ -34667,24 +34514,6 @@ ], "type": "object" }, - "SearchKnowledgeResponseDto": { - "properties": { - "results": { - "items": { - "$ref": "#/components/schemas/KnowledgeSearchResultDto" - }, - "type": "array" - }, - "statistics": { - "$ref": "#/components/schemas/SearchStatisticsDto" - } - }, - "required": [ - "results", - "statistics" - ], - "type": "object" - }, "SearchRelationshipObject": { "properties": { "sourceObjectId": { @@ -34922,23 +34751,6 @@ ], "type": "object" }, - "SearchStatisticsDto": { - "properties": { - "averageSimilarityScore": { - "format": "float", - "type": "number" - }, - "totalResults": { - "format": "int32", - "type": "integer" - } - }, - "required": [ - "averageSimilarityScore", - "totalResults" - ], - "type": "object" - }, "SectionSlideTemplate": { "description": "Settings for section slide.", "nullable": true, @@ -36316,61 +36128,6 @@ ], "type": "object" }, - "UpsertKnowledgeDocumentRequestDto": { - "properties": { - "content": { - "type": "string" - }, - "filename": { - "type": "string" - }, - "pageBoundaries": { - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "scopes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "type": "string" - } - }, - "required": [ - "content", - "filename" - ], - "type": "object" - }, - "UpsertKnowledgeDocumentResponseDto": { - "properties": { - "filename": { - "type": "string" - }, - "message": { - "type": "string" - }, - "numChunks": { - "format": "int32", - "type": "integer" - }, - "success": { - "type": "boolean" - } - }, - "required": [ - "filename", - "message", - "numChunks", - "success" - ], - "type": "object" - }, "UserAssignee": { "description": "List of users", "properties": { @@ -36933,6 +36690,13 @@ "description": "ID of the currently active visualization in the switcher.", "type": "string" }, + "filters": { + "description": "Filters currently applied to the dashboard.", + "items": { + "$ref": "#/components/schemas/FilterDefinition" + }, + "type": "array" + }, "resultId": { "description": "Signed result ID for the currently active visualization's execution result.", "type": "string" @@ -37280,6 +37044,22 @@ "propertyName": "widgetType" }, "properties": { + "filters": { + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/AbstractMeasureValueFilter" + }, + { + "$ref": "#/components/schemas/FilterDefinitionForSimpleMeasure" + }, + { + "$ref": "#/components/schemas/InlineFilterDefinition" + } + ] + }, + "type": "array" + }, "title": { "type": "string" }, @@ -39590,23 +39370,6 @@ ] } }, - "/api/v1/actions/organization/metadataCheck": { - "post": { - "description": "(BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK.", - "operationId": "metadataCheckOrganization", - "responses": { - "200": { - "description": "OK" - } - }, - "summary": "(BETA) Check Organization Metadata Inconsistencies", - "tags": [ - "AI", - "Metadata Check", - "actions" - ] - } - }, "/api/v1/actions/organization/metadataSync": { "post": { "description": "(BETA) Temporary solution. Later relevant metadata actions will trigger sync in their scope only.", @@ -40750,368 +40513,6 @@ ] } }, - "/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents": { - "get": { - "operationId": "listDocuments", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "query", - "name": "scopes", - "required": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - { - "in": "query", - "name": "size", - "required": false, - "schema": { - "default": 50, - "format": "int32", - "type": "integer" - } - }, - { - "in": "query", - "name": "pageToken", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "metaInclude", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "state", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListKnowledgeDocumentsResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "post": { - "operationId": "createDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateKnowledgeDocumentRequestDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateKnowledgeDocumentResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "put": { - "operationId": "upsertDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpsertKnowledgeDocumentRequestDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpsertKnowledgeDocumentResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - } - }, - "/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/documents/{filename}": { - "delete": { - "operationId": "deleteDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteKnowledgeDocumentResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "get": { - "operationId": "getDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KnowledgeDocumentMetadataDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - }, - "patch": { - "operationId": "patchDocument", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "path", - "name": "filename", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PatchKnowledgeDocumentRequestDto" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KnowledgeDocumentMetadataDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - } - }, - "/api/v1/actions/workspaces/{workspaceId}/ai/knowledge/search": { - "get": { - "operationId": "searchKnowledge", - "parameters": [ - { - "description": "Workspace identifier", - "in": "path", - "name": "workspaceId", - "required": true, - "schema": { - "pattern": "^(?!\\.)[.A-Za-z0-9_-]{1,255}$", - "type": "string" - } - }, - { - "in": "query", - "name": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "limit", - "required": false, - "schema": { - "default": 10, - "format": "int32", - "type": "integer" - } - }, - { - "in": "query", - "name": "minScore", - "required": false, - "schema": { - "default": 0.0, - "format": "double", - "type": "number" - } - }, - { - "in": "query", - "name": "scopes", - "required": false, - "schema": { - "items": { - "type": "string" - }, - "type": "array" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SearchKnowledgeResponseDto" - } - } - }, - "description": "OK" - } - }, - "tags": [ - "actions" - ] - } - }, "/api/v1/actions/workspaces/{workspaceId}/ai/memory/createdBy": { "get": { "description": "Returns a list of Users who created any memory item for this workspace", diff --git a/schemas/gooddata-metadata-client.json b/schemas/gooddata-metadata-client.json index d39c95dd7..44ef8447a 100644 --- a/schemas/gooddata-metadata-client.json +++ b/schemas/gooddata-metadata-client.json @@ -4919,7 +4919,11 @@ "FederatedIdentityManagement", "AuditLogging", "ControlledFeatureRollout", - "AiLake" + "AiLake", + "AiModule", + "AiQueryLimit", + "AiKnowledgeStorageLimit", + "AiAgentLimit" ], "type": "string" }, @@ -10247,7 +10251,11 @@ "FederatedIdentityManagement", "AuditLogging", "ControlledFeatureRollout", - "AiLake" + "AiLake", + "AiModule", + "AiQueryLimit", + "AiKnowledgeStorageLimit", + "AiAgentLimit" ], "type": "string" }, @@ -31150,23 +31158,6 @@ ] } }, - "/api/v1/actions/organization/metadataCheck": { - "post": { - "description": "(BETA) Temporary solution. Resyncs all organization objects and full workspaces within the organization with target GEN_AI_CHECK.", - "operationId": "metadataCheckOrganization", - "responses": { - "200": { - "description": "OK" - } - }, - "summary": "(BETA) Check Organization Metadata Inconsistencies", - "tags": [ - "AI", - "Metadata Check", - "actions" - ] - } - }, "/api/v1/actions/organization/metadataSync": { "post": { "description": "(BETA) Temporary solution. Later relevant metadata actions will trigger sync in their scope only.", From 2c2a7aef91e5db2064307e1aad90a65eaf8ae706 Mon Sep 17 00:00:00 2001 From: Jan Tychtl Date: Wed, 1 Apr 2026 17:20:42 +0200 Subject: [PATCH 3/6] fix: docker-compose api-gw config and DS credential handling - Use duration strings for api-gw cache config (60 -> 1m) - Persist DS password after layout upload via entities PATCH - Fix _patch_ds_credentials to fall back to test_config ds_password risk: low --- docker-compose.yaml | 4 ++-- packages/gooddata-sdk/tests/conftest.py | 16 ++++++++-------- packages/tests-support/upload_demo_layout.py | 13 +++++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 4d3e1504a..252bca7e0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -515,9 +515,9 @@ services: GATEWAY_DB_POOL_MIN_IDLE: 0 GATEWAY_DB_POOL_MAX_LIFE_TIME: 300000 ORGANIZATION_CACHE_SIZE: 1000 - CACHE_EXPIRE_AFTER_WRITE: 60 + CACHE_EXPIRE_AFTER_WRITE: 1m USER_CACHE_SIZE: 1000 - USER_CACHE_EXPIRE_AFTER_WRITE: 60 + USER_CACHE_EXPIRE_AFTER_WRITE: 1m ORGANIZATION_CACHE_METRICS: "true" USER_CACHE_METRICS: "true" CALL_FORWARDER_CONNECT_TIMEOUT: 1m diff --git a/packages/gooddata-sdk/tests/conftest.py b/packages/gooddata-sdk/tests/conftest.py index 8522828ac..60daaddff 100644 --- a/packages/gooddata-sdk/tests/conftest.py +++ b/packages/gooddata-sdk/tests/conftest.py @@ -60,15 +60,15 @@ def test_config(request): @pytest.fixture(scope="session", autouse=True) def _patch_ds_credentials(test_config): - """Override demo-test-ds password in memory when DS_PASSWORD env var is set. + """Override demo-test-ds password in memory. - The credentials file (data_sources_credentials.yaml) is read by - _credentials_from_file() and used by put_declarative_data_sources and - test_data_sources_connection. Instead of rewriting the file on disk, - we wrap the static method to patch the returned dict in memory. + The credentials file (data_sources_credentials.yaml) contains a placeholder + value for demo-test-ds. This fixture patches _credentials_from_file() to + replace it with the real password — from DS_PASSWORD env var (staging) or + from the test config ds_password (local). """ - env_ds_password = os.environ.get("DS_PASSWORD") - if not env_ds_password: + ds_password = os.environ.get("DS_PASSWORD") or test_config.get("ds_password") + if not ds_password: yield return @@ -80,7 +80,7 @@ def _patch_ds_credentials(test_config): def _patched_credentials_from_file(credentials_path): credentials = original(credentials_path) if "demo-test-ds" in credentials: - credentials["demo-test-ds"] = env_ds_password + credentials["demo-test-ds"] = ds_password return credentials CatalogDataSourceService._credentials_from_file = _patched_credentials_from_file diff --git a/packages/tests-support/upload_demo_layout.py b/packages/tests-support/upload_demo_layout.py index 0146e9066..cfcd06efa 100644 --- a/packages/tests-support/upload_demo_layout.py +++ b/packages/tests-support/upload_demo_layout.py @@ -207,6 +207,19 @@ def update_layout(): print("Uploading test DS with physical model for demo", flush=True) rest_op_default("put", f"api/{api_version}/layout/dataSources", data_sources) + # Layout PUT does not persist passwords — set them via entities PATCH + print("Setting data source passwords via entities API...", flush=True) + for ds in data_sources.get("dataSources", []): + ds_id = ds["id"] + ds_password = ds.get("password") + if ds_password: + rest_op_jsonapi( + "patch", + f"api/{api_version}/entities/dataSources/{ds_id}", + {"data": {"id": ds_id, "type": "dataSource", "attributes": {"password": ds_password}}}, + ) + print(f" Set password for DS '{ds_id}'", flush=True) + # Verify data sources were uploaded with permissions print("Verifying data source permissions...", flush=True) result = rest_op_default("get", f"api/{api_version}/layout/dataSources", raise_ex=False) From 985422ffdb2c840dc1e6c87c820a69b656813f78 Mon Sep 17 00:00:00 2001 From: Jan Tychtl Date: Wed, 1 Apr 2026 17:21:09 +0200 Subject: [PATCH 4/6] feat(tests): environment-agnostic VCR cassette normalization Add configure_normalization() to vcrpy_utils that rewrites all environment-specific values to canonical local equivalents during cassette recording. Normalization covers: - Request URIs: staging host -> http://localhost:3000 - Request bodies: org_id, org_name in JSON payloads (bytes + str) - Response bodies: all env-specific values (bytes + str) - Response headers: Location headers with org_id paths When running against local, the replacements list is empty (no-op). IMPORTANT: When modifying tests-support, clear caches first: rm -rf packages/gooddata-sdk/.tox uv cache clean tests-support --force risk: low --- .../execute_compute_table_all_columns.yaml | 6 +- .../execute_compute_table_metrics_only.yaml | 6 +- ...ompute_table_with_reduced_granularity.yaml | 6 +- .../fixtures/execute_insight_all_columns.yaml | 6 +- .../execute_insight_some_columns.yaml | 6 +- .../import_compute_without_restrictions.yaml | 82 +- .../import_insights_without_restrictions.yaml | 82 +- ...ame_for_exec_def_bytes_limits_failure.yaml | 10 +- ...or_exec_def_dimensions_limits_failure.yaml | 10 +- .../dataframe_for_exec_def_one_dim1.yaml | 16 +- .../dataframe_for_exec_def_one_dim2.yaml | 28 +- .../dataframe_for_exec_def_totals1.yaml | 16 +- .../dataframe_for_exec_def_totals2.yaml | 16 +- .../dataframe_for_exec_def_totals3.yaml | 16 +- .../dataframe_for_exec_def_totals4.yaml | 16 +- .../dataframe_for_exec_def_two_dim1.yaml | 22 +- .../dataframe_for_exec_def_two_dim2.yaml | 20 +- .../dataframe_for_exec_def_two_dim3.yaml | 16 +- .../fixtures/dataframe_for_items.yaml | 6 +- .../dataframe_for_items_no_index.yaml | 6 +- .../fixtures/dataframe_for_visualization.yaml | 6 +- .../dataframe_for_visualization_date.yaml | 22 +- .../dataframe_for_visualization_no_index.yaml | 6 +- .../fixtures/empty_indexed_dataframe.yaml | 6 +- .../fixtures/empty_not_indexed_dataframe.yaml | 6 +- .../dataframe/fixtures/filtered_empty_df.yaml | 6 +- ...ulti_index_filtered_metrics_and_label.yaml | 6 +- ...ndex_filtered_metrics_and_label_reuse.yaml | 6 +- .../fixtures/multi_index_metrics.yaml | 6 +- .../multi_index_metrics_and_label.yaml | 6 +- ...t_indexed_filtered_metrics_and_labels.yaml | 6 +- .../fixtures/not_indexed_metrics.yaml | 6 +- .../not_indexed_metrics_and_labels.yaml | 6 +- ...mple_index_filtered_metrics_and_label.yaml | 6 +- .../fixtures/simple_index_metrics.yaml | 6 +- .../simple_index_metrics_and_label.yaml | 6 +- .../simple_index_metrics_no_duplicate.yaml | 6 +- .../fixtures/multi_index_filtered_series.yaml | 6 +- .../fixtures/multi_index_metric_series.yaml | 6 +- .../not_indexed_filtered_metric_series.yaml | 12 +- .../fixtures/not_indexed_label_series.yaml | 6 +- ...indexed_label_series_with_granularity.yaml | 6 +- .../fixtures/not_indexed_metric_series.yaml | 6 +- ...ndexed_metric_series_with_granularity.yaml | 6 +- .../simple_index_filtered_series.yaml | 6 +- .../fixtures/simple_index_label_series.yaml | 6 +- .../fixtures/simple_index_metric_series.yaml | 6 +- .../expected/declarative_analytics_model.json | 49 +- .../declarative_analytics_model_child.json | 9 +- .../catalog/expected/declarative_ldm.json | 448 +- .../declarative_workspaces_snake_case.json | 99 +- .../fixtures/data_sources/bigquery.yaml | 182 +- .../data_sources/demo_cache_strategy.yaml | 190 +- .../data_sources/demo_data_sources_list.yaml | 57 +- .../demo_delete_declarative_data_sources.yaml | 87 +- .../demo_generate_logical_model.yaml | 262 +- ...o_generate_logical_model_sql_datasets.yaml | 204 +- ...load_and_put_declarative_data_sources.yaml | 283 +- .../demo_put_declarative_data_sources.yaml | 196 +- ...t_declarative_data_sources_connection.yaml | 233 +- .../demo_register_upload_notification.yaml | 299 +- ...o_scan_pdm_and_generate_logical_model.yaml | 320 +- ...d_generate_logical_model_sql_datasets.yaml | 272 +- .../data_sources/demo_scan_schemata.yaml | 29 +- .../demo_store_declarative_data_sources.yaml | 274 +- .../demo_test_declarative_data_sources.yaml | 135 +- .../data_sources/demo_test_scan_model.yaml | 101 +- .../demo_test_scan_model_with_schemata.yaml | 74 +- ...emo_test_scan_model_with_table_prefix.yaml | 72 +- .../catalog/fixtures/data_sources/dremio.yaml | 156 +- .../catalog/fixtures/data_sources/patch.yaml | 358 +- .../fixtures/data_sources/redshift.yaml | 162 +- .../scan_scan_sql_without_preview.yaml | 31 +- .../fixtures/data_sources/scan_sql.yaml | 67 +- .../scan_sql_with_nulls_in_preview.yaml | 43 +- .../fixtures/data_sources/snowflake.yaml | 312 +- .../data_sources/test_create_update.yaml | 386 +- .../fixtures/data_sources/vertica.yaml | 156 +- .../organization/create_csp_directive.yaml | 103 +- .../fixtures/organization/create_jwk.yaml | 177 +- .../create_organization_setting.yaml | 113 +- .../organization/delete_csp_directive.yaml | 120 +- .../fixtures/organization/delete_jwk.yaml | 177 +- .../delete_organization_setting.yaml | 128 +- .../layout_notification_channels.yaml | 82 +- .../organization/list_csp_directives.yaml | 216 +- .../fixtures/organization/list_jwk.yaml | 357 +- .../list_organization_settings.yaml | 236 +- .../fixtures/organization/organization.yaml | 81 +- .../organization/update_allowed_origins.yaml | 478 +- .../organization/update_csp_directive.yaml | 142 +- .../fixtures/organization/update_jwk.yaml | 295 +- .../fixtures/organization/update_name.yaml | 420 +- .../update_organization_setting.yaml | 160 +- .../get_declarative_permissions.yaml | 104 +- .../permissions/list_available_assignees.yaml | 37 +- .../list_dashboard_permissions.yaml | 142 +- ...ard_permissions_declarative_workspace.yaml | 361 +- .../manage_organization_permissions.yaml | 118 +- ..._declarative_organization_permissions.yaml | 118 +- .../put_declarative_permissions.yaml | 175 +- .../fixtures/users/create_delete_user.yaml | 330 +- .../users/create_delete_user_group.yaml | 320 +- .../users/get_declarative_user_groups.yaml | 102 +- .../fixtures/users/get_declarative_users.yaml | 110 +- .../get_declarative_users_user_groups.yaml | 112 +- .../catalog/fixtures/users/get_user.yaml | 63 +- .../fixtures/users/get_user_group.yaml | 39 +- .../fixtures/users/list_user_groups.yaml | 88 +- .../catalog/fixtures/users/list_users.yaml | 86 +- .../load_and_put_declarative_user_groups.yaml | 433 +- .../users/load_and_put_declarative_users.yaml | 356 +- ...and_put_declarative_users_user_groups.yaml | 387 +- .../users/put_declarative_user_groups.yaml | 343 +- .../fixtures/users/put_declarative_users.yaml | 274 +- .../put_declarative_users_user_groups.yaml | 297 +- .../users/store_declarative_user_groups.yaml | 274 +- .../users/store_declarative_users.yaml | 274 +- .../store_declarative_users_user_groups.yaml | 274 +- .../fixtures/users/test_api_tokens.yaml | 169 +- .../users/test_assign_permissions_bulk.yaml | 275 +- .../test_get_user_group_permissions.yaml | 49 +- .../users/test_get_user_permissions.yaml | 49 +- .../test_manage_user_group_permissions.yaml | 150 +- .../users/test_manage_user_permissions.yaml | 150 +- .../users/test_revoke_permissions_bulk.yaml | 138 +- .../users/test_user_add_user_group.yaml | 63 +- .../users/test_user_add_user_groups.yaml | 63 +- .../users/test_user_remove_user_groups.yaml | 63 +- .../users/test_user_replace_user_groups.yaml | 63 +- .../catalog/fixtures/users/update_user.yaml | 452 +- .../fixtures/users/update_user_group.yaml | 232 +- .../analytics_store_load.yaml | 606 +- .../workspace_content/demo_catalog.yaml | 1322 +- .../demo_catalog_availability.yaml | 1382 +- .../demo_catalog_list_aggregated_facts.yaml | 65 +- .../demo_catalog_list_attributes.yaml | 465 +- .../demo_catalog_list_facts.yaml | 120 +- .../demo_catalog_list_labels.yaml | 302 +- .../demo_catalog_list_metrics.yaml | 224 +- .../demo_get_declarative_analytics_model.yaml | 229 +- ...get_declarative_analytics_model_child.yaml | 58 +- .../demo_get_declarative_ldm.yaml | 98 +- .../demo_get_dependent_entities_graph.yaml | 286 +- ...dent_entities_graph_from_entry_points.yaml | 65 +- ...and_modify_ds_and_put_declarative_ldm.yaml | 1766 +- ...d_and_put_declarative_analytics_model.yaml | 1747 +- .../demo_load_and_put_declarative_ldm.yaml | 1339 +- ...ad_ldm_and_modify_tables_columns_case.yaml | 98 +- .../demo_put_declarative_analytics_model.yaml | 1285 +- .../demo_put_declarative_ldm.yaml | 1257 +- ...emo_store_declarative_analytics_model.yaml | 784 +- .../demo_store_declarative_ldm.yaml | 342 +- .../explicit_workspace_data_filter.yaml | 2483 +-- .../export_definition_analytics_layout.yaml | 1242 +- .../workspace_content/label_elements.yaml | 528 +- .../workspace_content/ldm_store_load.yaml | 172 +- .../workspaces/add_metadata_locale.yaml | 255 +- .../workspaces/clean_metadata_locale.yaml | 820 +- .../workspaces/create_workspace_setting.yaml | 156 +- .../workspaces/delete_workspace_setting.yaml | 210 +- .../workspaces/demo_clone_workspace.yaml | 17190 ++++++++-------- .../workspaces/demo_create_workspace.yaml | 861 +- .../demo_declarative_workspaces.yaml | 490 +- .../demo_delete_non_existing_workspace.yaml | 208 +- .../demo_delete_parent_workspace.yaml | 208 +- .../workspaces/demo_delete_workspace.yaml | 798 +- ...emo_get_declarative_user_data_filters.yaml | 52 +- .../demo_get_declarative_workspace.yaml | 482 +- ...et_declarative_workspace_data_filters.yaml | 112 +- .../demo_get_declarative_workspaces.yaml | 259 +- ...get_declarative_workspaces_snake_case.yaml | 259 +- .../workspaces/demo_get_workspace.yaml | 98 +- ...and_put_declarative_user_data_filters.yaml | 779 +- ...mo_load_and_put_declarative_workspace.yaml | 2073 +- ...ut_declarative_workspace_data_filters.yaml | 857 +- ...o_load_and_put_declarative_workspaces.yaml | 1677 +- ...emo_put_declarative_user_data_filters.yaml | 628 +- .../demo_put_declarative_workspace.yaml | 2100 +- ...ut_declarative_workspace_data_filters.yaml | 767 +- .../demo_put_declarative_workspaces.yaml | 2184 +- ...o_store_declarative_user_data_filters.yaml | 230 +- .../demo_store_declarative_workspace.yaml | 660 +- ...re_declarative_workspace_data_filters.yaml | 274 +- .../demo_store_declarative_workspaces.yaml | 830 +- .../workspaces/demo_translate_workspace.yaml | 3052 +-- .../demo_update_workspace_invalid.yaml | 315 +- .../demo_update_workspace_valid.yaml | 930 +- .../workspaces/demo_workspace_list.yaml | 86 +- .../workspaces/get_metadata_localization.yaml | 72 +- .../workspaces/layout_automations.yaml | 156 +- .../workspaces/layout_filter_views.yaml | 160 +- .../workspaces/list_workspace_settings.yaml | 289 +- .../workspaces/set_metadata_localization.yaml | 95 +- .../workspaces/update_workspace_setting.yaml | 299 +- .../user_data_filters_for_user_group.yaml | 899 +- .../user_data_filters_life_cycle.yaml | 899 +- .../analytical_dashboards/campaign.yaml | 6 +- .../dashboard_plugin.yaml | 6 +- .../product_and_category.yaml | 6 +- .../dashboard_plugins/dashboard_plugin_1.yaml | 6 +- .../dashboard_plugins/dashboard_plugin_2.yaml | 6 +- .../filter_contexts/campaign_name_filter.yaml | 2 +- .../filter_contexts/region_filter.yaml | 2 +- .../metrics/amount_of_active_customers.yaml | 6 +- .../metrics/amount_of_orders.yaml | 6 +- .../metrics/amount_of_top_customers.yaml | 6 +- .../metrics/amount_of_valid_orders.yaml | 6 +- .../metrics/campaign_spend.yaml | 6 +- .../analytics_model/metrics/order_amount.yaml | 6 +- .../metrics/percent_revenue.yaml | 6 +- ...percent_revenue_from_top_10_customers.yaml | 6 +- ...revenue_from_top_10_percent_customers.yaml | 6 +- ..._revenue_from_top_10_percent_products.yaml | 6 +- .../percent_revenue_from_top_10_products.yaml | 6 +- .../metrics/percent_revenue_in_category.yaml | 6 +- .../metrics/percent_revenue_per_product.yaml | 6 +- .../metrics/revenue-clothing.yaml | 6 +- .../metrics/revenue-electronic.yaml | 6 +- .../analytics_model/metrics/revenue-home.yaml | 6 +- .../metrics/revenue-outdoor.yaml | 6 +- .../demo/analytics_model/metrics/revenue.yaml | 6 +- .../metrics/revenue_per_customer.yaml | 6 +- .../metrics/revenue_per_dollar_spent.yaml | 6 +- .../metrics/revenue_top_10.yaml | 6 +- .../metrics/revenue_top_10_percent.yaml | 6 +- .../metrics/total_revenue-no_filters.yaml | 6 +- .../metrics/total_revenue.yaml | 6 +- .../visualization_objects/campaign_spend.yaml | 6 +- .../customers_trend.yaml | 10 +- ..._per_product_by_customer_and_category.yaml | 6 +- .../percentage_of_customers_by_region.yaml | 6 +- .../product_breakdown.yaml | 6 +- .../product_categories_pie_chart.yaml | 6 +- ...venue_comparison-over_previous_period.yaml | 6 +- .../product_saleability.yaml | 6 +- ..._and_quantity_by_product_and_category.yaml | 6 +- .../revenue_by_category_trend.yaml | 6 +- .../revenue_by_product.yaml | 6 +- .../revenue_per_usd_vs_spend_by_campaign.yaml | 6 +- .../visualization_objects/revenue_trend.yaml | 6 +- .../top_10_customers.yaml | 6 +- .../top_10_products.yaml | 6 +- .../default/workspaces/demo/demo.yaml | 6 +- .../demo/ldm/datasets/campaign_channels.yaml | 8 +- .../campaign_channels_per_category.yaml | 3 +- .../demo/ldm/datasets/campaigns.yaml | 4 +- .../demo/ldm/datasets/customers.yaml | 7 +- .../demo/ldm/datasets/order_lines.yaml | 11 +- .../demo/ldm/datasets/products.yaml | 5 +- .../demo/ldm/date_instances/date.yaml | 2 +- .../campaign.yaml | 4 +- .../workspaces/demo_west/demo_west.yaml | 6 +- .../ldm/dataset_extensions/order_lines.yaml | 2 +- .../demo_west_california.yaml | 6 +- .../workspaces_data_filters/wdf__region.yaml | 2 +- .../workspaces_data_filters/wdf__state.yaml | 2 +- .../analytical_dashboards/campaign.yaml | 58 + .../dashboard_plugin.yaml | 39 + .../product_and_category.yaml | 152 + .../dashboard_plugins/dashboard_plugin_1.yaml | 11 + .../dashboard_plugins/dashboard_plugin_2.yaml | 11 + .../filter_contexts/campaign_name_filter.yaml | 22 + .../filter_contexts/region_filter.yaml | 17 + .../metrics/amount_of_active_customers.yaml | 10 + .../metrics/amount_of_orders.yaml | 10 + .../metrics/amount_of_top_customers.yaml | 11 + .../metrics/amount_of_valid_orders.yaml | 12 + .../metrics/campaign_spend.yaml | 10 + .../analytics_model/metrics/order_amount.yaml | 10 + .../metrics/percent_revenue.yaml | 10 + ...percent_revenue_from_top_10_customers.yaml | 11 + ...revenue_from_top_10_percent_customers.yaml | 11 + ..._revenue_from_top_10_percent_products.yaml | 11 + .../percent_revenue_from_top_10_products.yaml | 11 + .../metrics/percent_revenue_in_category.yaml | 11 + .../metrics/percent_revenue_per_product.yaml | 10 + .../metrics/revenue-clothing.yaml | 10 + .../metrics/revenue-electronic.yaml | 10 + .../analytics_model/metrics/revenue-home.yaml | 10 + .../metrics/revenue-outdoor.yaml | 10 + .../demo/analytics_model/metrics/revenue.yaml | 12 + .../metrics/revenue_per_customer.yaml | 10 + .../metrics/revenue_per_dollar_spent.yaml | 10 + .../metrics/revenue_top_10.yaml | 10 + .../metrics/revenue_top_10_percent.yaml | 10 + .../metrics/total_revenue-no_filters.yaml | 10 + .../metrics/total_revenue.yaml | 10 + .../visualization_objects/campaign_spend.yaml | 65 + .../customers_trend.yaml | 77 + ..._per_product_by_customer_and_category.yaml | 80 + .../percentage_of_customers_by_region.yaml | 60 + .../product_breakdown.yaml | 58 + .../product_categories_pie_chart.yaml | 54 + ...venue_comparison-over_previous_period.yaml | 76 + .../product_saleability.yaml | 58 + ..._and_quantity_by_product_and_category.yaml | 100 + .../revenue_by_category_trend.yaml | 57 + .../revenue_by_product.yaml | 40 + .../revenue_per_usd_vs_spend_by_campaign.yaml | 57 + .../visualization_objects/revenue_trend.yaml | 69 + .../top_10_customers.yaml | 58 + .../top_10_products.yaml | 58 + .../demo/ldm/datasets/campaign_channels.yaml | 74 + .../campaign_channels_per_category.yaml | 37 + .../demo/ldm/datasets/campaigns.yaml | 38 + .../demo/ldm/datasets/customers.yaml | 65 + .../demo/ldm/datasets/order_lines.yaml | 118 + .../demo/ldm/datasets/products.yaml | 47 + .../demo/ldm/date_instances/date.yaml | 15 + .../analytical_dashboards/campaign.yaml | 6 +- .../dashboard_plugin.yaml | 6 +- .../product_and_category.yaml | 6 +- .../dashboard_plugins/dashboard_plugin_1.yaml | 6 +- .../dashboard_plugins/dashboard_plugin_2.yaml | 6 +- .../filter_contexts/campaign_name_filter.yaml | 2 +- .../filter_contexts/region_filter.yaml | 2 +- .../metrics/amount_of_active_customers.yaml | 6 +- .../metrics/amount_of_orders.yaml | 6 +- .../metrics/amount_of_top_customers.yaml | 6 +- .../metrics/amount_of_valid_orders.yaml | 6 +- .../metrics/campaign_spend.yaml | 6 +- .../analytics_model/metrics/order_amount.yaml | 6 +- .../metrics/percent_revenue.yaml | 6 +- ...percent_revenue_from_top_10_customers.yaml | 6 +- ...revenue_from_top_10_percent_customers.yaml | 6 +- ..._revenue_from_top_10_percent_products.yaml | 6 +- .../percent_revenue_from_top_10_products.yaml | 6 +- .../metrics/percent_revenue_in_category.yaml | 6 +- .../metrics/percent_revenue_per_product.yaml | 6 +- .../metrics/revenue-clothing.yaml | 6 +- .../metrics/revenue-electronic.yaml | 6 +- .../analytics_model/metrics/revenue-home.yaml | 6 +- .../metrics/revenue-outdoor.yaml | 6 +- .../analytics_model/metrics/revenue.yaml | 6 +- .../metrics/revenue_per_customer.yaml | 6 +- .../metrics/revenue_per_dollar_spent.yaml | 6 +- .../metrics/revenue_top_10.yaml | 6 +- .../metrics/revenue_top_10_percent.yaml | 6 +- .../metrics/total_revenue-no_filters.yaml | 6 +- .../metrics/total_revenue.yaml | 6 +- .../visualization_objects/campaign_spend.yaml | 6 +- .../customers_trend.yaml | 10 +- ..._per_product_by_customer_and_category.yaml | 6 +- .../percentage_of_customers_by_region.yaml | 6 +- .../product_breakdown.yaml | 6 +- .../product_categories_pie_chart.yaml | 6 +- ...venue_comparison-over_previous_period.yaml | 6 +- .../product_saleability.yaml | 6 +- ..._and_quantity_by_product_and_category.yaml | 6 +- .../revenue_by_category_trend.yaml | 6 +- .../revenue_by_product.yaml | 6 +- .../revenue_per_usd_vs_spend_by_campaign.yaml | 6 +- .../visualization_objects/revenue_trend.yaml | 6 +- .../top_10_customers.yaml | 6 +- .../top_10_products.yaml | 6 +- .../ldm/datasets/campaign_channels.yaml | 8 +- .../campaign_channels_per_category.yaml | 3 +- .../demo_testing/ldm/datasets/campaigns.yaml | 4 +- .../demo_testing/ldm/datasets/customers.yaml | 7 +- .../ldm/datasets/order_lines.yaml | 11 +- .../demo_testing/ldm/datasets/products.yaml | 5 +- .../demo_testing/ldm/date_instances/date.yaml | 2 +- .../refresh/declarative_workspaces.json | 3951 ++-- packages/gooddata-sdk/tests/conftest.py | 5 + .../export/fixtures/test_export_csv.yaml | 227 +- .../test_export_csv_by_visualization_id.yaml | 319 +- .../export/fixtures/test_export_excel.yaml | 657 +- ...test_export_excel_by_visualization_id.yaml | 634 +- .../tests/support/fixtures/is_available.yaml | 33 +- .../fixtures/is_available_no_access.yaml | 27 +- .../fixtures/wait_till_available_no_wait.yaml | 33 +- .../table_with_attribute_and_metric.yaml | 141 +- ...able_with_attribute_metric_and_filter.yaml | 141 +- .../table_with_attribute_show_all_values.yaml | 444 +- .../fixtures/table_with_just_attribute.yaml | 133 +- .../fixtures/table_with_just_metric.yaml | 109 +- .../src/tests_support/vcrpy_utils.py | 161 + 378 files changed, 46043 insertions(+), 41119 deletions(-) create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/campaign.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/dashboard_plugin.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/product_and_category.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/campaign_name_filter.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/region_filter.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_active_customers.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_orders.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_top_customers.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml create mode 100644 packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml diff --git a/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_all_columns.yaml b/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_all_columns.yaml index 19a0609c4..b6fe88c74 100644 --- a/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_all_columns.yaml +++ b/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_all_columns.yaml @@ -103,7 +103,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 4b12a06a-487e-46d5-9d60-488e15b57c40 + - c1b88009-aa3c-4c0e-bb48-78274460f84b X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -155,10 +155,10 @@ interactions: name: Revenue localIdentifier: dim_1 links: - executionResult: f6a00a91124ea1040b01c1b8831adb92ba7f5ba4:e6b88a13de23c82db3678aa8f42c5d60a1b645f5fa3d308fbe393dd69ac4e41f + executionResult: 17112be1dce1186b2e9e8eb98df13f98a25d1d00:1c2fc9fbe88951356b3be5d25ac6e7159b8aad520c09e7ae35e5a303017159a1 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/f6a00a91124ea1040b01c1b8831adb92ba7f5ba4%3Ae6b88a13de23c82db3678aa8f42c5d60a1b645f5fa3d308fbe393dd69ac4e41f?offset=0%2C0&limit=512%2C256 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/17112be1dce1186b2e9e8eb98df13f98a25d1d00%3A1c2fc9fbe88951356b3be5d25ac6e7159b8aad520c09e7ae35e5a303017159a1?offset=0%2C0&limit=512%2C256 body: null headers: Accept: diff --git a/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_metrics_only.yaml b/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_metrics_only.yaml index 167c6d2c9..f4485eee3 100644 --- a/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_metrics_only.yaml +++ b/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_metrics_only.yaml @@ -89,7 +89,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 79955fb8-cc71-4521-9c15-675b013d1c74 + - 7b8c4edb-2f26-49b0-8cc1-fd631b548f92 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -109,10 +109,10 @@ interactions: name: Revenue localIdentifier: dim_0 links: - executionResult: 56975cbe08024d150757b5a5de1b64c3e3948ff1:8e1cadd7ffa3122dec261230119d721fb0982535710e64bc682a98d4b800bd8a + executionResult: 368f0773c497d83261529bc36e3e3a1688d12f22:1b533f8295a523dd72fbb987eef7bf236400f0ca9829302a2d627c2af9c777df - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/56975cbe08024d150757b5a5de1b64c3e3948ff1%3A8e1cadd7ffa3122dec261230119d721fb0982535710e64bc682a98d4b800bd8a?offset=0&limit=256 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/368f0773c497d83261529bc36e3e3a1688d12f22%3A1b533f8295a523dd72fbb987eef7bf236400f0ca9829302a2d627c2af9c777df?offset=0&limit=256 body: null headers: Accept: diff --git a/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_with_reduced_granularity.yaml b/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_with_reduced_granularity.yaml index d4a406112..40456815c 100644 --- a/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_with_reduced_granularity.yaml +++ b/packages/gooddata-fdw/tests/execute/fixtures/execute_compute_table_with_reduced_granularity.yaml @@ -78,7 +78,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - c113c082-69db-4625-965c-ae1e30da11cd + - cbc2b5f7-fcf2-4bbe-9865-d68138749167 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -111,10 +111,10 @@ interactions: name: Revenue localIdentifier: dim_1 links: - executionResult: 3c592204c3c06ac180cb7f07a42fe7293d7f5c34:b8f99c102eff20475276527c4de48f016d8fd5a17dc08369f311a59999b3f5f9 + executionResult: d15e9e5db67fd98019552fccbed72b488bd3ea29:627a2973420b8bf365dd5742d17398e841b4e00407e4ebc55b2431eff28fb4b8 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/3c592204c3c06ac180cb7f07a42fe7293d7f5c34%3Ab8f99c102eff20475276527c4de48f016d8fd5a17dc08369f311a59999b3f5f9?offset=0%2C0&limit=512%2C256 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d15e9e5db67fd98019552fccbed72b488bd3ea29%3A627a2973420b8bf365dd5742d17398e841b4e00407e4ebc55b2431eff28fb4b8?offset=0%2C0&limit=512%2C256 body: null headers: Accept: diff --git a/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_all_columns.yaml b/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_all_columns.yaml index e70807c8b..cb6753b20 100644 --- a/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_all_columns.yaml +++ b/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_all_columns.yaml @@ -375,7 +375,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 9d5d2daa-64d8-40e2-9797-81abd09b70aa + - 098efc48-3375-4de2-a27d-26c1d5f06d65 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -427,10 +427,10 @@ interactions: name: Revenue localIdentifier: dim_1 links: - executionResult: a48fff91153e53681fe1835a1790259611b24d2f:41a18ba83d92626b6782bb70d16a3c934861331096315dacb4f57b290cf6cbb9 + executionResult: ed3b1e6374fc299e5c276e78b4f3296044ae0bcd:bd2e7bb8cb72ad3cc40d45ce6c1042a47804ff3e4e7cc66d56f763f51c3b48de - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a48fff91153e53681fe1835a1790259611b24d2f%3A41a18ba83d92626b6782bb70d16a3c934861331096315dacb4f57b290cf6cbb9?offset=0%2C0&limit=512%2C256 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ed3b1e6374fc299e5c276e78b4f3296044ae0bcd%3Abd2e7bb8cb72ad3cc40d45ce6c1042a47804ff3e4e7cc66d56f763f51c3b48de?offset=0%2C0&limit=512%2C256 body: null headers: Accept: diff --git a/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_some_columns.yaml b/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_some_columns.yaml index fcedaa8f6..b33464845 100644 --- a/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_some_columns.yaml +++ b/packages/gooddata-fdw/tests/execute/fixtures/execute_insight_some_columns.yaml @@ -375,7 +375,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 0ac6459b-2f46-4e7a-9620-f171b8094880 + - 648ebea8-434f-4ad6-a2fc-5136561eacca X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -427,10 +427,10 @@ interactions: name: Revenue localIdentifier: dim_1 links: - executionResult: a48fff91153e53681fe1835a1790259611b24d2f:41a18ba83d92626b6782bb70d16a3c934861331096315dacb4f57b290cf6cbb9 + executionResult: ed3b1e6374fc299e5c276e78b4f3296044ae0bcd:bd2e7bb8cb72ad3cc40d45ce6c1042a47804ff3e4e7cc66d56f763f51c3b48de - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a48fff91153e53681fe1835a1790259611b24d2f%3A41a18ba83d92626b6782bb70d16a3c934861331096315dacb4f57b290cf6cbb9?offset=0%2C0&limit=512%2C256 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ed3b1e6374fc299e5c276e78b4f3296044ae0bcd%3Abd2e7bb8cb72ad3cc40d45ce6c1042a47804ff3e4e7cc66d56f763f51c3b48de?offset=0%2C0&limit=512%2C256 body: null headers: Accept: diff --git a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml index c1a2269a8..376662902 100644 --- a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml +++ b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_compute_without_restrictions.yaml @@ -599,20 +599,6 @@ interactions: - id: order_line_id type: attribute referenceProperties: - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - dataType: INT - target: - id: product_id - type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: id: customers type: dataset @@ -623,7 +609,7 @@ interactions: target: id: customer_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -637,7 +623,7 @@ interactions: target: id: date type: date - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -651,7 +637,21 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true + nullValue: null + sourceColumns: null + sourceColumnDataTypes: null + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + target: + id: product_id + type: attribute + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -660,10 +660,10 @@ interactions: - demo - order_lines workspaceDataFilterColumns: - - name: wdf__state - dataType: STRING - name: wdf__region dataType: STRING + - name: wdf__state + dataType: STRING workspaceDataFilterReferences: - filterId: id: wdf__state @@ -713,7 +713,7 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1089,7 +1089,7 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1138,7 +1138,7 @@ interactions: target: id: campaign_channel_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1261,20 +1261,6 @@ interactions: - id: order_line_id type: attribute referenceProperties: - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - dataType: INT - target: - id: product_id - type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: id: customers type: dataset @@ -1285,7 +1271,7 @@ interactions: target: id: customer_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1299,7 +1285,7 @@ interactions: target: id: date type: date - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1313,7 +1299,21 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true + nullValue: null + sourceColumns: null + sourceColumnDataTypes: null + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + target: + id: product_id + type: attribute + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1323,10 +1323,10 @@ interactions: - order_lines areRelationsValid: true workspaceDataFilterColumns: - - name: wdf__state - dataType: STRING - name: wdf__region dataType: STRING + - name: wdf__state + dataType: STRING workspaceDataFilterReferences: - filterId: id: wdf__state diff --git a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml index 6c5c16714..e84627f88 100644 --- a/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml +++ b/packages/gooddata-fdw/tests/import_foreign_schema/fixtures/import_insights_without_restrictions.yaml @@ -599,20 +599,6 @@ interactions: - id: order_line_id type: attribute referenceProperties: - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - dataType: INT - target: - id: product_id - type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: id: customers type: dataset @@ -623,7 +609,7 @@ interactions: target: id: customer_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -637,7 +623,7 @@ interactions: target: id: date type: date - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -651,7 +637,21 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true + nullValue: null + sourceColumns: null + sourceColumnDataTypes: null + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + target: + id: product_id + type: attribute + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -660,10 +660,10 @@ interactions: - demo - order_lines workspaceDataFilterColumns: - - name: wdf__state - dataType: STRING - name: wdf__region dataType: STRING + - name: wdf__state + dataType: STRING workspaceDataFilterReferences: - filterId: id: wdf__state @@ -713,7 +713,7 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1089,7 +1089,7 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1138,7 +1138,7 @@ interactions: target: id: campaign_channel_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1261,20 +1261,6 @@ interactions: - id: order_line_id type: attribute referenceProperties: - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - dataType: INT - target: - id: product_id - type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: id: customers type: dataset @@ -1285,7 +1271,7 @@ interactions: target: id: customer_id type: attribute - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1299,7 +1285,7 @@ interactions: target: id: date type: date - isNullable: null + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1313,7 +1299,21 @@ interactions: target: id: campaign_id type: attribute - isNullable: null + isNullable: true + nullValue: null + sourceColumns: null + sourceColumnDataTypes: null + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + target: + id: product_id + type: attribute + isNullable: true nullValue: null sourceColumns: null sourceColumnDataTypes: null @@ -1323,10 +1323,10 @@ interactions: - order_lines areRelationsValid: true workspaceDataFilterColumns: - - name: wdf__state - dataType: STRING - name: wdf__region dataType: STRING + - name: wdf__state + dataType: STRING workspaceDataFilterReferences: - filterId: id: wdf__state diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_bytes_limits_failure.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_bytes_limits_failure.yaml index e72850a35..a1729f894 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_bytes_limits_failure.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_bytes_limits_failure.yaml @@ -90,7 +90,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 2158007b-e092-4bd6-842a-7e863b1bc821 + - 7089295a-e613-4f71-8ee2-785b4bc14c17 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -153,10 +153,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0/metadata body: null headers: Accept: @@ -296,7 +296,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 resultSpec: dimensions: - localIdentifier: dim_0 @@ -313,7 +313,7 @@ interactions: resultSize: 4625 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_dimensions_limits_failure.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_dimensions_limits_failure.yaml index be2e70fdf..0d9566941 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_dimensions_limits_failure.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_dimensions_limits_failure.yaml @@ -90,7 +90,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 5f504466-cfc0-44f8-8914-b30740c9d2bd + - 457d3078-9d4c-4b85-8dc2-d8c8b0df0ad2 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -153,10 +153,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0/metadata body: null headers: Accept: @@ -296,7 +296,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 resultSpec: dimensions: - localIdentifier: dim_0 @@ -313,7 +313,7 @@ interactions: resultSize: 4625 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim1.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim1.yaml index 62d069086..46ade3782 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim1.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim1.yaml @@ -88,7 +88,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 6c4793eb-e3fc-4367-a206-fe61c7c01766 + - 4ec2d739-65ce-49e0-82c0-8c3e220ecbf0 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -149,10 +149,10 @@ interactions: name: Order Amount localIdentifier: dim_0 links: - executionResult: b409d6ea18df8b885da52a1a2d9d424ac2576770:39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7 + executionResult: a48e954232fe451c510f091ece3aa945e199b096:dcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/b409d6ea18df8b885da52a1a2d9d424ac2576770%3A39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a48e954232fe451c510f091ece3aa945e199b096%3Adcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd/metadata body: null headers: Accept: @@ -290,7 +290,7 @@ interactions: name: Order Amount localIdentifier: dim_0 links: - executionResult: b409d6ea18df8b885da52a1a2d9d424ac2576770:39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7 + executionResult: a48e954232fe451c510f091ece3aa945e199b096:dcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd resultSpec: dimensions: - localIdentifier: dim_0 @@ -304,7 +304,7 @@ interactions: resultSize: 2913 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/b409d6ea18df8b885da52a1a2d9d424ac2576770%3A39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7?offset=0&limit=500 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a48e954232fe451c510f091ece3aa945e199b096%3Adcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd?offset=0&limit=500 body: null headers: Accept: @@ -4731,7 +4731,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/b409d6ea18df8b885da52a1a2d9d424ac2576770%3A39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a48e954232fe451c510f091ece3aa945e199b096%3Adcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd/metadata body: null headers: Accept: @@ -4869,7 +4869,7 @@ interactions: name: Order Amount localIdentifier: dim_0 links: - executionResult: b409d6ea18df8b885da52a1a2d9d424ac2576770:39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7 + executionResult: a48e954232fe451c510f091ece3aa945e199b096:dcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd resultSpec: dimensions: - localIdentifier: dim_0 @@ -4883,7 +4883,7 @@ interactions: resultSize: 2913 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/b409d6ea18df8b885da52a1a2d9d424ac2576770%3A39c2608ea5e132fcff8ccdaabdd474282e7d21d041cad45a16feb761b62359b7?offset=0&limit=500 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a48e954232fe451c510f091ece3aa945e199b096%3Adcb4d2f54853d3d69397e970b7e9141cee3eb3bf06d1b729e4edea1a83b81cfd?offset=0&limit=500 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim2.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim2.yaml index 9d3dfed39..8015b1653 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim2.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_one_dim2.yaml @@ -90,7 +90,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 639c538b-75b5-47ea-892b-a24919a46634 + - 85184336-5138-4103-9ebf-deeaf2f97ed6 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -153,10 +153,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4f7b311296f89a035148eb4b0bd58baf99173a92:5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88 + executionResult: 1c4b71f642890e631f5068427b9dfb3526dfd16b:239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f/metadata body: null headers: Accept: @@ -296,7 +296,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4f7b311296f89a035148eb4b0bd58baf99173a92:5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88 + executionResult: 1c4b71f642890e631f5068427b9dfb3526dfd16b:239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f resultSpec: dimensions: - localIdentifier: dim_0 @@ -313,7 +313,7 @@ interactions: resultSize: 2913 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -1576,7 +1576,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C100&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C100&limit=100%2C100 body: null headers: Accept: @@ -2839,7 +2839,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C200&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C200&limit=100%2C100 body: null headers: Accept: @@ -4102,7 +4102,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C300&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C300&limit=100%2C100 body: null headers: Accept: @@ -4933,7 +4933,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f/metadata body: null headers: Accept: @@ -5073,7 +5073,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4f7b311296f89a035148eb4b0bd58baf99173a92:5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88 + executionResult: 1c4b71f642890e631f5068427b9dfb3526dfd16b:239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f resultSpec: dimensions: - localIdentifier: dim_0 @@ -5090,7 +5090,7 @@ interactions: resultSize: 2913 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -6353,7 +6353,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C100&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C100&limit=100%2C100 body: null headers: Accept: @@ -7616,7 +7616,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C200&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C200&limit=100%2C100 body: null headers: Accept: @@ -8879,7 +8879,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f7b311296f89a035148eb4b0bd58baf99173a92%3A5fce346b0f34ae7c711b81a4f44d4c5896c33378696bc0f000842cb1bd074c88?offset=0%2C300&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1c4b71f642890e631f5068427b9dfb3526dfd16b%3A239eb580fa8a20509fcc53f060b528cad13715de7a983c2938c988856e9ef11f?offset=0%2C300&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals1.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals1.yaml index 718183694..8464e8b20 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals1.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals1.yaml @@ -109,7 +109,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - bc70326e-5991-4dbc-b3c4-b19872bb2ea0 + - 158b370d-5e6b-42d4-a3df-9d7577716800 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -172,10 +172,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 408f39187cd3add70ae02b26571b34d42e15f6d2:96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4 + executionResult: ae2431d75a58752c72c2fc593af1744e6648d39f:6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/408f39187cd3add70ae02b26571b34d42e15f6d2%3A96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ae2431d75a58752c72c2fc593af1744e6648d39f%3A6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf/metadata body: null headers: Accept: @@ -315,7 +315,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 408f39187cd3add70ae02b26571b34d42e15f6d2:96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4 + executionResult: ae2431d75a58752c72c2fc593af1744e6648d39f:6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf resultSpec: dimensions: - localIdentifier: dim_0 @@ -350,7 +350,7 @@ interactions: resultSize: 4794 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/408f39187cd3add70ae02b26571b34d42e15f6d2%3A96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ae2431d75a58752c72c2fc593af1744e6648d39f%3A6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -1779,7 +1779,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/408f39187cd3add70ae02b26571b34d42e15f6d2%3A96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ae2431d75a58752c72c2fc593af1744e6648d39f%3A6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf/metadata body: null headers: Accept: @@ -1919,7 +1919,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 408f39187cd3add70ae02b26571b34d42e15f6d2:96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4 + executionResult: ae2431d75a58752c72c2fc593af1744e6648d39f:6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf resultSpec: dimensions: - localIdentifier: dim_0 @@ -1954,7 +1954,7 @@ interactions: resultSize: 4794 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/408f39187cd3add70ae02b26571b34d42e15f6d2%3A96cd6a3a7afe256f41ba54609d27da9bebedadbebdbed750e3f30db1ba4a3ef4?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ae2431d75a58752c72c2fc593af1744e6648d39f%3A6971040a842816f0ba215d15c22a54d4bda3813e0de73b922ee95a3e18e80fdf?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals2.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals2.yaml index 3370fdb53..30c18271a 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals2.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals2.yaml @@ -107,7 +107,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 3e5875d2-5c5f-47e0-a40d-ca6fca7c67ec + - d59a0fd7-36fb-4fff-8edd-7891602d8648 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -170,10 +170,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 7415580d76d01d735bb8c0e3d859faf60b859b7c:2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825 + executionResult: 43dffd047bb492ea7d66fa50076cde3fc264e657:aa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7415580d76d01d735bb8c0e3d859faf60b859b7c%3A2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/43dffd047bb492ea7d66fa50076cde3fc264e657%3Aaa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b/metadata body: null headers: Accept: @@ -313,7 +313,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 7415580d76d01d735bb8c0e3d859faf60b859b7c:2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825 + executionResult: 43dffd047bb492ea7d66fa50076cde3fc264e657:aa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b resultSpec: dimensions: - localIdentifier: dim_0 @@ -346,7 +346,7 @@ interactions: resultSize: 15444 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7415580d76d01d735bb8c0e3d859faf60b859b7c%3A2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/43dffd047bb492ea7d66fa50076cde3fc264e657%3Aaa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -2830,7 +2830,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7415580d76d01d735bb8c0e3d859faf60b859b7c%3A2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/43dffd047bb492ea7d66fa50076cde3fc264e657%3Aaa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b/metadata body: null headers: Accept: @@ -2970,7 +2970,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 7415580d76d01d735bb8c0e3d859faf60b859b7c:2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825 + executionResult: 43dffd047bb492ea7d66fa50076cde3fc264e657:aa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b resultSpec: dimensions: - localIdentifier: dim_0 @@ -3003,7 +3003,7 @@ interactions: resultSize: 15444 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7415580d76d01d735bb8c0e3d859faf60b859b7c%3A2e81f08d834aa81050ec7c22cbdf27aae27129040f759b92d09895baedb74825?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/43dffd047bb492ea7d66fa50076cde3fc264e657%3Aaa11b4b8ba79b38bc76a1c3e1ac2cf106fa8b29e0784b1c6d6d0bae8e0aa104b?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals3.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals3.yaml index f9868ae29..cd384f06d 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals3.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals3.yaml @@ -109,7 +109,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 192cf8b9-015e-4631-922f-eafc8146fdaf + - 5a55e05d-c16c-49a1-9b2b-0d21a673025a X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -172,10 +172,10 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 2953b8e44bc59aa00ecf9406d8c5e398921671f0:08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3 + executionResult: 9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5:31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/2953b8e44bc59aa00ecf9406d8c5e398921671f0%3A08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5%3A31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e/metadata body: null headers: Accept: @@ -315,7 +315,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 2953b8e44bc59aa00ecf9406d8c5e398921671f0:08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3 + executionResult: 9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5:31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e resultSpec: dimensions: - localIdentifier: dim_0 @@ -350,7 +350,7 @@ interactions: resultSize: 4794 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/2953b8e44bc59aa00ecf9406d8c5e398921671f0%3A08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5%3A31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -1779,7 +1779,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/2953b8e44bc59aa00ecf9406d8c5e398921671f0%3A08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5%3A31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e/metadata body: null headers: Accept: @@ -1919,7 +1919,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 2953b8e44bc59aa00ecf9406d8c5e398921671f0:08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3 + executionResult: 9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5:31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e resultSpec: dimensions: - localIdentifier: dim_0 @@ -1954,7 +1954,7 @@ interactions: resultSize: 4794 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/2953b8e44bc59aa00ecf9406d8c5e398921671f0%3A08bcbcb48210c28ec3e34a0e3c3d849ab7192506eabaefd563bb1479cf1b0aa3?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9b2e4ff5369b2451ba1b54d79b82ffd45ea4c9e5%3A31750ddb2fea3473dbe641a7e87844209ee8e63149aaeae0b430796dc670e68e?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals4.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals4.yaml index 437305b52..2eb0cea05 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals4.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_totals4.yaml @@ -107,7 +107,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 0eb0666b-ed63-4bd3-8f3d-9f4963e772f3 + - 76d0b656-cbab-4822-b3c4-a25a6612ff60 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -170,10 +170,10 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: a21604101728ffa3fb0d66db5b6e6330c7460949:cc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be + executionResult: 6ef70ceaeaacc1e368d317b94a070417c614ef4e:a577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a21604101728ffa3fb0d66db5b6e6330c7460949%3Acc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6ef70ceaeaacc1e368d317b94a070417c614ef4e%3Aa577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c/metadata body: null headers: Accept: @@ -313,7 +313,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: a21604101728ffa3fb0d66db5b6e6330c7460949:cc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be + executionResult: 6ef70ceaeaacc1e368d317b94a070417c614ef4e:a577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c resultSpec: dimensions: - localIdentifier: dim_0 @@ -346,7 +346,7 @@ interactions: resultSize: 15444 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a21604101728ffa3fb0d66db5b6e6330c7460949%3Acc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6ef70ceaeaacc1e368d317b94a070417c614ef4e%3Aa577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -2830,7 +2830,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a21604101728ffa3fb0d66db5b6e6330c7460949%3Acc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6ef70ceaeaacc1e368d317b94a070417c614ef4e%3Aa577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c/metadata body: null headers: Accept: @@ -2970,7 +2970,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: a21604101728ffa3fb0d66db5b6e6330c7460949:cc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be + executionResult: 6ef70ceaeaacc1e368d317b94a070417c614ef4e:a577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c resultSpec: dimensions: - localIdentifier: dim_0 @@ -3003,7 +3003,7 @@ interactions: resultSize: 15444 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/a21604101728ffa3fb0d66db5b6e6330c7460949%3Acc7a597c23790dd333c113f272f89c04a448bdc5eb81b2d2a92017d89dc790be?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6ef70ceaeaacc1e368d317b94a070417c614ef4e%3Aa577aeb43510ac241d2bc68fd02e653e0cb050a879ea6bfa1b0dff1ec506f26c?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim1.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim1.yaml index 847fad9ff..4fd174acb 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim1.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim1.yaml @@ -90,7 +90,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - bf81f154-1316-4958-9932-261b009e5d7b + - fc84f987-a9e4-4637-98a4-51c3125eb3ad X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -153,10 +153,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0/metadata body: null headers: Accept: @@ -296,7 +296,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 resultSpec: dimensions: - localIdentifier: dim_0 @@ -313,7 +313,7 @@ interactions: resultSize: 4625 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -1088,7 +1088,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0/metadata body: null headers: Accept: @@ -1228,7 +1228,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 resultSpec: dimensions: - localIdentifier: dim_0 @@ -1245,7 +1245,7 @@ interactions: resultSize: 4625 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -2020,7 +2020,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0/metadata body: null headers: Accept: @@ -2160,7 +2160,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b:e33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67 + executionResult: d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4:b852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0 resultSpec: dimensions: - localIdentifier: dim_0 @@ -2177,7 +2177,7 @@ interactions: resultSize: 4625 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/48aa1fc5bf17853aa3ac4a33f9dda22734fcb94b%3Ae33977b62092c94a076d5be31f8b2d2ffa819a43086b219546f7e0592e39af67?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d448ad63c4e75bf834f84fd8d510e1a1fa1e77a4%3Ab852f351614f9051942147a1ba73dc3379425e8f6b952efd0ca07d61bedbbba0?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim2.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim2.yaml index d0f6c5785..138031748 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim2.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim2.yaml @@ -90,7 +90,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 0f88f66c-ac59-41d8-8e77-3df6aa2472f9 + - 690612b6-492b-4f37-bfc5-166e1ef1bf3c X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -153,10 +153,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4f248f7d594e9cc6f5b2cd20217c798d35175577:034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d + executionResult: 82f10eb4b35e04da745563d32e4c9806c7ea091a:8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f248f7d594e9cc6f5b2cd20217c798d35175577%3A034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/82f10eb4b35e04da745563d32e4c9806c7ea091a%3A8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53/metadata body: null headers: Accept: @@ -296,7 +296,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4f248f7d594e9cc6f5b2cd20217c798d35175577:034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d + executionResult: 82f10eb4b35e04da745563d32e4c9806c7ea091a:8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53 resultSpec: dimensions: - localIdentifier: dim_0 @@ -313,7 +313,7 @@ interactions: resultSize: 11457 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f248f7d594e9cc6f5b2cd20217c798d35175577%3A034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/82f10eb4b35e04da745563d32e4c9806c7ea091a%3A8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -1480,7 +1480,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f248f7d594e9cc6f5b2cd20217c798d35175577%3A034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d?offset=100%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/82f10eb4b35e04da745563d32e4c9806c7ea091a%3A8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53?offset=100%2C0&limit=100%2C100 body: null headers: Accept: @@ -2449,7 +2449,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f248f7d594e9cc6f5b2cd20217c798d35175577%3A034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/82f10eb4b35e04da745563d32e4c9806c7ea091a%3A8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53/metadata body: null headers: Accept: @@ -2589,7 +2589,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4f248f7d594e9cc6f5b2cd20217c798d35175577:034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d + executionResult: 82f10eb4b35e04da745563d32e4c9806c7ea091a:8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53 resultSpec: dimensions: - localIdentifier: dim_0 @@ -2606,7 +2606,7 @@ interactions: resultSize: 11457 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f248f7d594e9cc6f5b2cd20217c798d35175577%3A034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/82f10eb4b35e04da745563d32e4c9806c7ea091a%3A8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -3773,7 +3773,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4f248f7d594e9cc6f5b2cd20217c798d35175577%3A034a24d78d291c3643182fd7ce961ff17ae2946955280b9bf4e62bd55f00fb2d?offset=100%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/82f10eb4b35e04da745563d32e4c9806c7ea091a%3A8d3b4fb15e08eb75bf35a1f3dc6bbd9ce327420c49ffd226f6cfc102239fbf53?offset=100%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim3.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim3.yaml index 1c0022bc8..f629030bc 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim3.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_exec_def_two_dim3.yaml @@ -90,7 +90,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 53481267-2bb7-48d6-9102-e58dda48e9ef + - 3c64920a-94e5-4eef-830a-76a8daf814d0 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -153,10 +153,10 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4ca7df7f1ef6889b936f76bb90f870fb82f0aa50:819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08 + executionResult: 61fbf142f2d4604d30466823533b984505119635:47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4ca7df7f1ef6889b936f76bb90f870fb82f0aa50%3A819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/61fbf142f2d4604d30466823533b984505119635%3A47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717/metadata body: null headers: Accept: @@ -296,7 +296,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4ca7df7f1ef6889b936f76bb90f870fb82f0aa50:819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08 + executionResult: 61fbf142f2d4604d30466823533b984505119635:47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717 resultSpec: dimensions: - localIdentifier: dim_0 @@ -313,7 +313,7 @@ interactions: resultSize: 3152 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4ca7df7f1ef6889b936f76bb90f870fb82f0aa50%3A819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/61fbf142f2d4604d30466823533b984505119635%3A47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717?offset=0%2C0&limit=100%2C100 body: null headers: Accept: @@ -1540,7 +1540,7 @@ interactions: dataSourceMessages: [] - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4ca7df7f1ef6889b936f76bb90f870fb82f0aa50%3A819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08/metadata + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/61fbf142f2d4604d30466823533b984505119635%3A47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717/metadata body: null headers: Accept: @@ -1680,7 +1680,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 4ca7df7f1ef6889b936f76bb90f870fb82f0aa50:819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08 + executionResult: 61fbf142f2d4604d30466823533b984505119635:47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717 resultSpec: dimensions: - localIdentifier: dim_0 @@ -1697,7 +1697,7 @@ interactions: resultSize: 3152 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4ca7df7f1ef6889b936f76bb90f870fb82f0aa50%3A819f2fa08d5504d9d959d199059da921163d420481d46a151dd8185f992caa08?offset=0%2C0&limit=100%2C100 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/61fbf142f2d4604d30466823533b984505119635%3A47eff65df3dfda4185d3ed6eeeeba23402a4f23d8a84a68663c098e59aeef717?offset=0%2C0&limit=100%2C100 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items.yaml index 12efaa0c8..861f9178c 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items.yaml @@ -84,7 +84,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 87ccaffd-6034-4652-8eff-d66927fa2c8a + - dedd2439-0551-44ea-8d39-8a0b985d9330 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -132,7 +132,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 114f01714d1177a1fc7b290ab0b597344b18a1f0:bd041a9490e3762ee48ddbff42f1bec67179ebe67fd7d4bf74c77faf70db832c + executionResult: 18a82d4d29540ddcd42714f2348bb6c119938cc2:ff00bfdcf9bd0a65a73955ebbe1454868d0a24b3d4086abfed4b12df44dde143 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -296,7 +296,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/114f01714d1177a1fc7b290ab0b597344b18a1f0%3Abd041a9490e3762ee48ddbff42f1bec67179ebe67fd7d4bf74c77faf70db832c?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/18a82d4d29540ddcd42714f2348bb6c119938cc2%3Aff00bfdcf9bd0a65a73955ebbe1454868d0a24b3d4086abfed4b12df44dde143?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items_no_index.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items_no_index.yaml index 587603ece..511cc0c2d 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items_no_index.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_items_no_index.yaml @@ -84,7 +84,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 70f092cc-0fc8-45e6-97db-08be4cb3c94f + - e57d6b37-617b-46c8-a7ea-9863238b5901 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -132,7 +132,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 114f01714d1177a1fc7b290ab0b597344b18a1f0:bd041a9490e3762ee48ddbff42f1bec67179ebe67fd7d4bf74c77faf70db832c + executionResult: 18a82d4d29540ddcd42714f2348bb6c119938cc2:ff00bfdcf9bd0a65a73955ebbe1454868d0a24b3d4086abfed4b12df44dde143 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -296,7 +296,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/114f01714d1177a1fc7b290ab0b597344b18a1f0%3Abd041a9490e3762ee48ddbff42f1bec67179ebe67fd7d4bf74c77faf70db832c?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/18a82d4d29540ddcd42714f2348bb6c119938cc2%3Aff00bfdcf9bd0a65a73955ebbe1454868d0a24b3d4086abfed4b12df44dde143?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization.yaml index 1f7248b3d..d84230bbf 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization.yaml @@ -371,7 +371,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 464ad0d3-cd57-4a89-ae01-7d6e05d423fc + - b4412237-bdc1-4478-bf35-eba94f9c8e22 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -423,7 +423,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 4eea8eeeafa569b6e9e5ec3a23e6f24f37fed284:e2c933e10be027fa413723c865dc7fbe3ed971587f9a5bab6ae7139572903dd2 + executionResult: dde92e09eb2ac95850e39b28356bc352f06025dd:eb14108c9a995dc5e6aec2e7942f2d1606d00474ea1addb22b74f43f606b64da - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28products.category%2Cproduct_name%29&page=0&size=500 @@ -570,7 +570,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27products.category%27%2C%27product_name%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4eea8eeeafa569b6e9e5ec3a23e6f24f37fed284%3Ae2c933e10be027fa413723c865dc7fbe3ed971587f9a5bab6ae7139572903dd2?offset=0%2C0&limit=4%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/dde92e09eb2ac95850e39b28356bc352f06025dd%3Aeb14108c9a995dc5e6aec2e7942f2d1606d00474ea1addb22b74f43f606b64da?offset=0%2C0&limit=4%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_date.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_date.yaml index 8956a535e..ac130c887 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_date.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_date.yaml @@ -276,7 +276,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 9673cb94-a2ea-45aa-ad03-3029765da0ff + - bdd6ddf6-929b-4776-801d-c3f002315af0 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -315,7 +315,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 4dc702f450ffdb0d4b6615dec896c194ebaca0e7:f8503553498384623b38b4abc1a4dcb53f005d91eac729dd60b84aee9d6f68bb + executionResult: 2c59862c9328dba501643e989257381c1de47e38:2c8e6cefba158629f2350f3cc881d376c039191025649e0280cf47a1515b9fdf - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28date.month%29&page=0&size=500 @@ -410,7 +410,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27date.month%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4dc702f450ffdb0d4b6615dec896c194ebaca0e7%3Af8503553498384623b38b4abc1a4dcb53f005d91eac729dd60b84aee9d6f68bb?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/2c59862c9328dba501643e989257381c1de47e38%3A2c8e6cefba158629f2350f3cc881d376c039191025649e0280cf47a1515b9fdf?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: @@ -429,7 +429,7 @@ interactions: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '1403' + - '1404' Content-Type: - application/json DATE: *id001 @@ -451,8 +451,7 @@ interactions: body: string: data: - - - 62 - - 60 + - - 60 - 51 - 60 - 55 @@ -463,8 +462,8 @@ interactions: - 90 - 60 - 64 - - - 93.78964285714285 - - 115.96454545454546 + - 65 + - - 115.96454545454546 - 241.92872340425532 - 270.91346938775513 - 92.0542 @@ -475,6 +474,7 @@ interactions: - 178.3658536585366 - 185.4194 - 146.6475 + - 111.88542372881356 dimensionHeaders: - headerGroups: - headers: @@ -484,9 +484,6 @@ interactions: measureIndex: 1 - headerGroups: - headers: - - attributeHeader: - labelValue: 2025-03 - primaryLabelValue: 2025-03 - attributeHeader: labelValue: 2025-04 primaryLabelValue: 2025-04 @@ -520,6 +517,9 @@ interactions: - attributeHeader: labelValue: 2026-02 primaryLabelValue: 2026-02 + - attributeHeader: + labelValue: 2026-03 + primaryLabelValue: 2026-03 grandTotals: [] paging: count: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_no_index.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_no_index.yaml index 8454e23bc..7c7d26101 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_no_index.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/dataframe_for_visualization_no_index.yaml @@ -371,7 +371,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - ccb9dd92-4b8a-4e1c-be32-9798bba1beab + - 331ab3a4-1847-45da-b618-bc5987124285 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -423,7 +423,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 4eea8eeeafa569b6e9e5ec3a23e6f24f37fed284:e2c933e10be027fa413723c865dc7fbe3ed971587f9a5bab6ae7139572903dd2 + executionResult: dde92e09eb2ac95850e39b28356bc352f06025dd:eb14108c9a995dc5e6aec2e7942f2d1606d00474ea1addb22b74f43f606b64da - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28products.category%2Cproduct_name%29&page=0&size=500 @@ -570,7 +570,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27products.category%27%2C%27product_name%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4eea8eeeafa569b6e9e5ec3a23e6f24f37fed284%3Ae2c933e10be027fa413723c865dc7fbe3ed971587f9a5bab6ae7139572903dd2?offset=0%2C0&limit=4%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/dde92e09eb2ac95850e39b28356bc352f06025dd%3Aeb14108c9a995dc5e6aec2e7942f2d1606d00474ea1addb22b74f43f606b64da?offset=0%2C0&limit=4%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/empty_indexed_dataframe.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/empty_indexed_dataframe.yaml index dbecd3456..f58b0c7ca 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/empty_indexed_dataframe.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/empty_indexed_dataframe.yaml @@ -77,7 +77,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 77adbe53-46f4-48ef-978b-d3b17db8ed9f + - 3fe917e7-7c70-4fe9-8ccd-c7ca4ad649e6 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -112,7 +112,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 693663b5b076fc4e974bca272cf591c2ba17855c:f0b0337ceccba73e40f422f1503443d52f913a108764b7a3405b55c42ecf5c6b + executionResult: e8234e0c80fa8cf45a76ef767b21946a93a3fddd:0a243aed669a8798b6d7b5c174c2be85f0bb45ec8fcde853ffc5b31f65655f97 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28product_name%29&page=0&size=500 @@ -219,7 +219,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27product_name%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/693663b5b076fc4e974bca272cf591c2ba17855c%3Af0b0337ceccba73e40f422f1503443d52f913a108764b7a3405b55c42ecf5c6b?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/e8234e0c80fa8cf45a76ef767b21946a93a3fddd%3A0a243aed669a8798b6d7b5c174c2be85f0bb45ec8fcde853ffc5b31f65655f97?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/empty_not_indexed_dataframe.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/empty_not_indexed_dataframe.yaml index c25b0ac8f..41c268a53 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/empty_not_indexed_dataframe.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/empty_not_indexed_dataframe.yaml @@ -77,7 +77,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 0397cae4-97ac-4c8e-a31c-80e13a03ecae + - 6111b2c6-e8c1-4a75-8a9c-ade66de57c93 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -112,7 +112,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 693663b5b076fc4e974bca272cf591c2ba17855c:f0b0337ceccba73e40f422f1503443d52f913a108764b7a3405b55c42ecf5c6b + executionResult: e8234e0c80fa8cf45a76ef767b21946a93a3fddd:0a243aed669a8798b6d7b5c174c2be85f0bb45ec8fcde853ffc5b31f65655f97 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28product_name%29&page=0&size=500 @@ -219,7 +219,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27product_name%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/693663b5b076fc4e974bca272cf591c2ba17855c%3Af0b0337ceccba73e40f422f1503443d52f913a108764b7a3405b55c42ecf5c6b?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/e8234e0c80fa8cf45a76ef767b21946a93a3fddd%3A0a243aed669a8798b6d7b5c174c2be85f0bb45ec8fcde853ffc5b31f65655f97?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/filtered_empty_df.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/filtered_empty_df.yaml index bcf06d236..22443a74a 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/filtered_empty_df.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/filtered_empty_df.yaml @@ -68,7 +68,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 1cc989fa-9b61-46e2-90c7-9183ce2b7f31 + - 48a8fd49-db88-4963-9531-76723824e8c5 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -83,10 +83,10 @@ interactions: name: Revenue localIdentifier: dim_0 links: - executionResult: 4d9c6dd2995b38d668d4f11b9cca663331a47704:796f75c652d207c64e906a2461b57cc1f1aeda041f763f626ec3a98569ad9234 + executionResult: ef95ccf55cbba4cadc0f68bb2d88d07872f58b0b:58f429fcb47da107435ec78c8f1a14a1652eb0464c3fe51b794acfe8f6349c5c - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/4d9c6dd2995b38d668d4f11b9cca663331a47704%3A796f75c652d207c64e906a2461b57cc1f1aeda041f763f626ec3a98569ad9234?offset=0&limit=1 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ef95ccf55cbba4cadc0f68bb2d88d07872f58b0b%3A58f429fcb47da107435ec78c8f1a14a1652eb0464c3fe51b794acfe8f6349c5c?offset=0&limit=1 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml index 06b08e2b5..3d12a50b2 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label.yaml @@ -102,7 +102,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 707bcd4c-3a61-4a0c-b3b5-2cbb885e3bb2 + - f8b52eb3-d400-47c6-b570-d1e842ac1bca X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -167,7 +167,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: f4c795b8678ef0010cebba54e4dbf950b735c79a:1b6eb925643dd9e18cf359f37768444048a7753f7bc735f18093b8b30301f5b7 + executionResult: 1efc8d5e6a53d0f243f7a85c0d2f688beea0bb94:7ed836e04a238205ed561f2b9e6779027c0ec6138c394763420b617389890405 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28state%2Cregion%2Cproducts.category%29&page=0&size=500 @@ -391,7 +391,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27state%27%2C%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/f4c795b8678ef0010cebba54e4dbf950b735c79a%3A1b6eb925643dd9e18cf359f37768444048a7753f7bc735f18093b8b30301f5b7?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/1efc8d5e6a53d0f243f7a85c0d2f688beea0bb94%3A7ed836e04a238205ed561f2b9e6779027c0ec6138c394763420b617389890405?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label_reuse.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label_reuse.yaml index 780b7d659..b02fb2452 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label_reuse.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_filtered_metrics_and_label_reuse.yaml @@ -91,7 +91,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 0b33d881-b054-4648-bdba-955200663548 + - 98d1c458-1b14-4158-8570-c03e17dd5715 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -141,7 +141,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: cf58bd7352f823b321260bd46a73c809e4aa83b5:c7b0391bbc9717ffd5f122204b97e970431dff7501682f37066406d715a3cd98 + executionResult: 708fdb682d1dacd4b27575075dfe903e80c40f5d:a1777a60c01d1328f75b68f34e1c6f1c07afd5b9e56f597870f01fe34ff6e289 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -305,7 +305,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/cf58bd7352f823b321260bd46a73c809e4aa83b5%3Ac7b0391bbc9717ffd5f122204b97e970431dff7501682f37066406d715a3cd98?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/708fdb682d1dacd4b27575075dfe903e80c40f5d%3Aa1777a60c01d1328f75b68f34e1c6f1c07afd5b9e56f597870f01fe34ff6e289?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics.yaml index cf7839109..b1934c482 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics.yaml @@ -83,7 +83,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - c76e420d-1bba-4bfa-947e-fc59bd160d3e + - ef5dfa8b-0600-42dd-a658-061b7f9f7936 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -133,7 +133,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 69181d25fc3c9db68eb482117e727fd0c7faab84:0c15b66c4264d981cb9fd4f6803e07e7cb26d6439f519f2374b80b1704e924b4 + executionResult: 8a205fc8b6c5bf15e7615530586a7574995ebc90:64bd8653c5c74e5515769ce9efe4c7b2d45303bcd57660028b9ee64b2ae985dd - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -297,7 +297,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/69181d25fc3c9db68eb482117e727fd0c7faab84%3A0c15b66c4264d981cb9fd4f6803e07e7cb26d6439f519f2374b80b1704e924b4?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/8a205fc8b6c5bf15e7615530586a7574995ebc90%3A64bd8653c5c74e5515769ce9efe4c7b2d45303bcd57660028b9ee64b2ae985dd?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml index f08bc6734..fdbd16009 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/multi_index_metrics_and_label.yaml @@ -89,7 +89,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 4b1a0e69-6286-459d-8c8f-aeac33ab0eb1 + - 1da43188-cfaf-454d-b122-bea1f3913f82 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -154,7 +154,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 7201eccd2ddaebb1cd6fbcafdf10e8eb88c90e8c:ac42c13ac6bd04f8c1d4c35a18829d1a47e370eefb1eae257a68669347358b88 + executionResult: d6c538773c8c5e6b8315290f94f2d8c98021b10b:605aac343f6a895462fe41b17dd70f0e7c504887cf068974ea1acf63c34263c9 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28state%2Cregion%2Cproducts.category%29&page=0&size=500 @@ -378,7 +378,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27state%27%2C%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7201eccd2ddaebb1cd6fbcafdf10e8eb88c90e8c%3Aac42c13ac6bd04f8c1d4c35a18829d1a47e370eefb1eae257a68669347358b88?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d6c538773c8c5e6b8315290f94f2d8c98021b10b%3A605aac343f6a895462fe41b17dd70f0e7c504887cf068974ea1acf63c34263c9?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_filtered_metrics_and_labels.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_filtered_metrics_and_labels.yaml index c7307578f..cc01b1817 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_filtered_metrics_and_labels.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_filtered_metrics_and_labels.yaml @@ -85,7 +85,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 118013bb-97a8-4eb9-a8bc-4688e9ae46d6 + - 9f988e01-79bd-47f8-8903-42f6fdeee643 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -120,7 +120,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 9bbc985fdb099c1eabc29187e588908fe4fb9b49:bddeaaca0a3264eab8d91b53c578f7576b777372f047b99ca626ed307f73e238 + executionResult: 9bebdc827c013035d5c87ea0bb024c2b11b6393a:704a482535bdc989c9d847bfcfc31a03b4c86d81369d2fc959e138fa86041fff - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -227,7 +227,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9bbc985fdb099c1eabc29187e588908fe4fb9b49%3Abddeaaca0a3264eab8d91b53c578f7576b777372f047b99ca626ed307f73e238?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9bebdc827c013035d5c87ea0bb024c2b11b6393a%3A704a482535bdc989c9d847bfcfc31a03b4c86d81369d2fc959e138fa86041fff?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics.yaml index 4d49ebefb..b45081bd7 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics.yaml @@ -69,7 +69,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 90baf11f-beb0-4071-bff9-3c34ce92a545 + - 8936e758-0f70-4a6c-8829-6cfdc21bd80e X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -87,10 +87,10 @@ interactions: name: '# of Orders' localIdentifier: dim_0 links: - executionResult: 3b0883f41d61487e9ece8ec61d291d54ce5ba75d:95e006dd6462e87df2de67fecea5e3181b6933a06f400b089bc55cea7e5f0222 + executionResult: 3348e1b0542aa2a14a6aeef3a8797d4840f78b15:2f73b70756cbb82d4a6b6fbfc4be579e5f79a2cd64a5451c5519c2ce5cf76892 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/3b0883f41d61487e9ece8ec61d291d54ce5ba75d%3A95e006dd6462e87df2de67fecea5e3181b6933a06f400b089bc55cea7e5f0222?offset=0&limit=2 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/3348e1b0542aa2a14a6aeef3a8797d4840f78b15%3A2f73b70756cbb82d4a6b6fbfc4be579e5f79a2cd64a5451c5519c2ce5cf76892?offset=0&limit=2 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics_and_labels.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics_and_labels.yaml index acf4067b0..b7b68bc02 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics_and_labels.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/not_indexed_metrics_and_labels.yaml @@ -77,7 +77,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - b840a5b0-9f37-43e6-ab56-f4d1ec84300b + - 721edc0d-fc5f-4a30-a0dd-9812daba1350 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -112,7 +112,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 33d28247c5cadadea8f34ae4f987a69ec7d567e6:7c69b123eec9bf5fd7853a16856805936d1aa9f67521148e565ab2dfc37a932e + executionResult: 35f178084615598249a681ac427c8b12a209548a:80a595760a3986f4295dcbadcb9c93b28e7a2b88ad7c016255707e34c36317fd - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -219,7 +219,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/33d28247c5cadadea8f34ae4f987a69ec7d567e6%3A7c69b123eec9bf5fd7853a16856805936d1aa9f67521148e565ab2dfc37a932e?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/35f178084615598249a681ac427c8b12a209548a%3A80a595760a3986f4295dcbadcb9c93b28e7a2b88ad7c016255707e34c36317fd?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_filtered_metrics_and_label.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_filtered_metrics_and_label.yaml index 53d345462..eeb156d88 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_filtered_metrics_and_label.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_filtered_metrics_and_label.yaml @@ -122,7 +122,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 080378a0-c57a-4265-afde-89d0cf955c5d + - 298d0224-c97b-42e2-bd19-cfc4a2cbd2ac X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -168,7 +168,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 8b6e1c68c1ec83e2a3e7c25fe3c7516d43660c9f:190b7d0dd8731ce8068c23cd0855984edc836444d6f7ad933940165e57c5daf7 + executionResult: fad65f4ba09037e2ad309d106f78167c4769cb82:fb9ad2f8e0c315f3a39ec35d078eeea7dc61d626869f0d57fb7ecf76bfcea6e4 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28products.category%2Cregion%29&page=0&size=500 @@ -332,7 +332,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27products.category%27%2C%27region%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/8b6e1c68c1ec83e2a3e7c25fe3c7516d43660c9f%3A190b7d0dd8731ce8068c23cd0855984edc836444d6f7ad933940165e57c5daf7?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/fad65f4ba09037e2ad309d106f78167c4769cb82%3Afb9ad2f8e0c315f3a39ec35d078eeea7dc61d626869f0d57fb7ecf76bfcea6e4?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics.yaml index 3faa481d0..b8064fbab 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics.yaml @@ -75,7 +75,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 0d3c83eb-66fb-4d59-9353-2ff03d9ea342 + - 8f515c9e-e60c-4a51-b30e-f6f3edd46b30 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -120,7 +120,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 023d5d53b8d434369b2c60a3f46bd8b055c7c292:d99341bd09abb242f9c85d9e9c4d5c917f22549d9ecf955072fa2710befaee15 + executionResult: d1f132b3c8aa8296350b4875f1f4e385b4c1a8fe:adc046675e6703b1e27ccdb3c40c4ddb26d67aad5417c5374f59579ee4a9fc52 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -284,7 +284,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/023d5d53b8d434369b2c60a3f46bd8b055c7c292%3Ad99341bd09abb242f9c85d9e9c4d5c917f22549d9ecf955072fa2710befaee15?offset=0%2C0&limit=1%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d1f132b3c8aa8296350b4875f1f4e385b4c1a8fe%3Aadc046675e6703b1e27ccdb3c40c4ddb26d67aad5417c5374f59579ee4a9fc52?offset=0%2C0&limit=1%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_and_label.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_and_label.yaml index f86dd8232..dbc96812f 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_and_label.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_and_label.yaml @@ -79,7 +79,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 18df73f8-a817-4952-9dfd-5b3964b42b1f + - fd1ff4af-88f0-4b9d-89a6-435519ee4e63 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -110,7 +110,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 32e55f7d07c28350bbe0c7f5932741327f5569e3:1aa0681b119eb94469081906223b791982b3221c82dfffcbc899cf9f59a44ab2 + executionResult: 7da09f3c24995a0a12fb32a5b9e16e73f97fe265:c358a58c41ee13d0e910f6eead896a54fce00f8e54dc8f99f87c65901280f585 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -217,7 +217,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/32e55f7d07c28350bbe0c7f5932741327f5569e3%3A1aa0681b119eb94469081906223b791982b3221c82dfffcbc899cf9f59a44ab2?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7da09f3c24995a0a12fb32a5b9e16e73f97fe265%3Ac358a58c41ee13d0e910f6eead896a54fce00f8e54dc8f99f87c65901280f585?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_no_duplicate.yaml b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_no_duplicate.yaml index fa207fbd5..7fc78dd27 100644 --- a/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_no_duplicate.yaml +++ b/packages/gooddata-pandas/tests/dataframe/fixtures/simple_index_metrics_no_duplicate.yaml @@ -79,7 +79,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 5dc1f3bd-d263-4c19-a0ba-ab5ac4910cc0 + - 54c570bf-175d-4699-ab8a-930711c272ca X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -110,7 +110,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 32e55f7d07c28350bbe0c7f5932741327f5569e3:1aa0681b119eb94469081906223b791982b3221c82dfffcbc899cf9f59a44ab2 + executionResult: 7da09f3c24995a0a12fb32a5b9e16e73f97fe265:c358a58c41ee13d0e910f6eead896a54fce00f8e54dc8f99f87c65901280f585 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -217,7 +217,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/32e55f7d07c28350bbe0c7f5932741327f5569e3%3A1aa0681b119eb94469081906223b791982b3221c82dfffcbc899cf9f59a44ab2?offset=0%2C0&limit=2%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/7da09f3c24995a0a12fb32a5b9e16e73f97fe265%3Ac358a58c41ee13d0e910f6eead896a54fce00f8e54dc8f99f87c65901280f585?offset=0%2C0&limit=2%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/multi_index_filtered_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/multi_index_filtered_series.yaml index 6e0af023c..b893cfe2d 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/multi_index_filtered_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/multi_index_filtered_series.yaml @@ -83,7 +83,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 9bd2e87a-11a6-40d3-98c8-752dcc867199 + - d5cc8bff-dfd4-487e-9bf2-2c27ae7b3eec X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -128,7 +128,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: ff23d746db30b87be8afc52a33ed7a1c691ef827:a40bc2bc8dc168a797acc2fcf0488ba9c087045700b7db90b88975a06b36cf68 + executionResult: 6ea00ea3fd40eaa2e61f4231326765f53808fd64:b1c1610133db52eec9624a9961a61f9f88999363f86429e30ac373aa4068473a - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -292,7 +292,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/ff23d746db30b87be8afc52a33ed7a1c691ef827%3Aa40bc2bc8dc168a797acc2fcf0488ba9c087045700b7db90b88975a06b36cf68?offset=0%2C0&limit=1%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6ea00ea3fd40eaa2e61f4231326765f53808fd64%3Ab1c1610133db52eec9624a9961a61f9f88999363f86429e30ac373aa4068473a?offset=0%2C0&limit=1%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/multi_index_metric_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/multi_index_metric_series.yaml index 820b0789a..d2bff4c81 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/multi_index_metric_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/multi_index_metric_series.yaml @@ -75,7 +75,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 2c782d56-7b22-49a8-af6f-420b3f000745 + - b3e78ca3-4964-46bd-aea4-c114a11f1df7 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -120,7 +120,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 023d5d53b8d434369b2c60a3f46bd8b055c7c292:d99341bd09abb242f9c85d9e9c4d5c917f22549d9ecf955072fa2710befaee15 + executionResult: d1f132b3c8aa8296350b4875f1f4e385b4c1a8fe:adc046675e6703b1e27ccdb3c40c4ddb26d67aad5417c5374f59579ee4a9fc52 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%2Cproducts.category%29&page=0&size=500 @@ -284,7 +284,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27region%27%2C%27products.category%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/023d5d53b8d434369b2c60a3f46bd8b055c7c292%3Ad99341bd09abb242f9c85d9e9c4d5c917f22549d9ecf955072fa2710befaee15?offset=0%2C0&limit=1%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/d1f132b3c8aa8296350b4875f1f4e385b4c1a8fe%3Aadc046675e6703b1e27ccdb3c40c4ddb26d67aad5417c5374f59579ee4a9fc52?offset=0%2C0&limit=1%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_filtered_metric_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_filtered_metric_series.yaml index 14c5511a6..8f56c2363 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_filtered_metric_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_filtered_metric_series.yaml @@ -61,7 +61,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - cb592156-cfc1-4b96-a3f1-e87124227d53 + - 2040742f-346b-47d4-98fd-fa3770faa9b1 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -74,10 +74,10 @@ interactions: - localIdentifier: 27c4b665b9d047b1a66a149714f1c596 localIdentifier: dim_0 links: - executionResult: 0064d11186aa76b6a3ba289ecd36a860c83ccf0e:9b10cea7336ba4a258116d294439f40193e3eef0ce67889234d6638be906a4b0 + executionResult: 57cfbe8dca167c2e6ae3056e9b4439cf79d52c28:1a6e48b98d8a1c6bbb12b2873652b667f4a9a007755906a0ae04bccf14179c0f - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/0064d11186aa76b6a3ba289ecd36a860c83ccf0e%3A9b10cea7336ba4a258116d294439f40193e3eef0ce67889234d6638be906a4b0?offset=0&limit=1 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/57cfbe8dca167c2e6ae3056e9b4439cf79d52c28%3A1a6e48b98d8a1c6bbb12b2873652b667f4a9a007755906a0ae04bccf14179c0f?offset=0&limit=1 body: null headers: Accept: @@ -201,7 +201,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - a8c6cb4f-a12f-4ae4-972a-d7ad2199ef2c + - 23c620ce-e704-473e-a8d3-1fbfa3b19714 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -214,10 +214,10 @@ interactions: - localIdentifier: 27c4b665b9d047b1a66a149714f1c596 localIdentifier: dim_0 links: - executionResult: e69ad6c1f888ca37fd7c6ed066873adf5148a2d2:8f96563bbc98787daa04982298c2b8917683b3ec00090018a0ef5a41fb497397 + executionResult: 3a8df1bcc224e77ea057abf9335cc97b289aaa38:e7d3635bfdfea887bb25a826d378777a25dcf4499040716a6b79c81cb3b53046 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/e69ad6c1f888ca37fd7c6ed066873adf5148a2d2%3A8f96563bbc98787daa04982298c2b8917683b3ec00090018a0ef5a41fb497397?offset=0&limit=1 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/3a8df1bcc224e77ea057abf9335cc97b289aaa38%3Ae7d3635bfdfea887bb25a826d378777a25dcf4499040716a6b79c81cb3b53046?offset=0&limit=1 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series.yaml index b90e86a6e..978f68c3d 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series.yaml @@ -56,7 +56,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 6a0269df-9b2c-4e4f-a59d-380bf1d793ae + - 9fc9844d-552d-4c3a-9120-2a1c165b8f16 X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -82,7 +82,7 @@ interactions: valueType: TEXT localIdentifier: dim_0 links: - executionResult: 6d363c8d2c4839e99cb6fbb6aec968bbb5e6a1c7:f9f06c3e4ac60eb23bed110d6fcd452d120e2d173323caf660e2b2d950fd6299 + executionResult: 650082acd9479285addbfa1cd32fe6537f8c7831:3d9aa71cd3cd52590f55292261a55926bc701144dcc8531e84021871bf406ca2 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -189,7 +189,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6d363c8d2c4839e99cb6fbb6aec968bbb5e6a1c7%3Af9f06c3e4ac60eb23bed110d6fcd452d120e2d173323caf660e2b2d950fd6299?offset=0&limit=1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/650082acd9479285addbfa1cd32fe6537f8c7831%3A3d9aa71cd3cd52590f55292261a55926bc701144dcc8531e84021871bf406ca2?offset=0&limit=1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series_with_granularity.yaml b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series_with_granularity.yaml index 831897790..13f996274 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series_with_granularity.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_label_series_with_granularity.yaml @@ -62,7 +62,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 076c98e1-2a2d-47af-93ac-95d3f8d673a4 + - 742a470f-369a-4a0e-a6a1-a0040632f4cd X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -103,7 +103,7 @@ interactions: valueType: TEXT localIdentifier: dim_0 links: - executionResult: 04f3bf2d64cc39ca7b5c384b69f7268956e1cf68:d1490373eab1aaa480390a8061e4e1a95e3edc2b67c12f00a5481805116415c5 + executionResult: 13f51e0401885f410e4159d07af0d1873eea5804:c42528e59060f4b859d27187c47b648d0bcb41450e41bcefcdd81c2b4c380aae - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28products.category%2Cregion%29&page=0&size=500 @@ -267,7 +267,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27products.category%27%2C%27region%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/04f3bf2d64cc39ca7b5c384b69f7268956e1cf68%3Ad1490373eab1aaa480390a8061e4e1a95e3edc2b67c12f00a5481805116415c5?offset=0&limit=1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/13f51e0401885f410e4159d07af0d1873eea5804%3Ac42528e59060f4b859d27187c47b648d0bcb41450e41bcefcdd81c2b4c380aae?offset=0&limit=1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series.yaml index 80b0216cb..efc5ac82f 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series.yaml @@ -61,7 +61,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - f5dabb5b-771e-4e4c-b5da-f1b4ead14aa4 + - 7fded530-ea37-4c94-9152-f1079767ca8c X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -74,10 +74,10 @@ interactions: - localIdentifier: 27c4b665b9d047b1a66a149714f1c596 localIdentifier: dim_0 links: - executionResult: 0064d11186aa76b6a3ba289ecd36a860c83ccf0e:9b10cea7336ba4a258116d294439f40193e3eef0ce67889234d6638be906a4b0 + executionResult: 57cfbe8dca167c2e6ae3056e9b4439cf79d52c28:1a6e48b98d8a1c6bbb12b2873652b667f4a9a007755906a0ae04bccf14179c0f - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/0064d11186aa76b6a3ba289ecd36a860c83ccf0e%3A9b10cea7336ba4a258116d294439f40193e3eef0ce67889234d6638be906a4b0?offset=0&limit=1 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/57cfbe8dca167c2e6ae3056e9b4439cf79d52c28%3A1a6e48b98d8a1c6bbb12b2873652b667f4a9a007755906a0ae04bccf14179c0f?offset=0&limit=1 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series_with_granularity.yaml b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series_with_granularity.yaml index 5228481ab..f691070e1 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series_with_granularity.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/not_indexed_metric_series_with_granularity.yaml @@ -69,7 +69,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 839fbbdd-58a2-410c-af59-eab34958a042 + - 82a4efc6-7999-46bd-990c-d52f5a53d0fe X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -99,7 +99,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 6223b85178815264a0989a3256955db64f6a4cc1:1e6b926d89279587608d32e54880b2cd88e667dcce02912609cc65edfcf650f4 + executionResult: 88109555880bc4e0c46800051a253a83e8f30389:c443873fd360427284ab7f923f1fa3b875af31e347b2a91570cc627f89ea15f4 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -206,7 +206,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6223b85178815264a0989a3256955db64f6a4cc1%3A1e6b926d89279587608d32e54880b2cd88e667dcce02912609cc65edfcf650f4?offset=0%2C0&limit=1%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/88109555880bc4e0c46800051a253a83e8f30389%3Ac443873fd360427284ab7f923f1fa3b875af31e347b2a91570cc627f89ea15f4?offset=0%2C0&limit=1%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/simple_index_filtered_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/simple_index_filtered_series.yaml index 5c3b6bed7..e004eecd7 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/simple_index_filtered_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/simple_index_filtered_series.yaml @@ -78,7 +78,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 5ea92b15-2cdb-4cf9-8102-f6ffdb26a1a3 + - 2c2a3d55-a425-410b-bf6b-d26d3aaf4cda X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -119,7 +119,7 @@ interactions: valueType: TEXT localIdentifier: dim_0 links: - executionResult: eb98e3fd16a281188ccf118559fa0125e41ebf00:941b34721648b7b6799116f7d17a33d42304e2eec254a894411f4f90ebdeeac2 + executionResult: 9b34d22a27cde2286cb6637160f6a1520f981106:9606c506935a185b14ae3d355e9e6fa1e74d3b89c1c175457bc9a50233a06738 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28products.category%2Cregion%29&page=0&size=500 @@ -283,7 +283,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28%27products.category%27%2C%27region%27%29&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/eb98e3fd16a281188ccf118559fa0125e41ebf00%3A941b34721648b7b6799116f7d17a33d42304e2eec254a894411f4f90ebdeeac2?offset=0&limit=1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/9b34d22a27cde2286cb6637160f6a1520f981106%3A9606c506935a185b14ae3d355e9e6fa1e74d3b89c1c175457bc9a50233a06738?offset=0&limit=1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/simple_index_label_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/simple_index_label_series.yaml index 48a267be1..282101d1f 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/simple_index_label_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/simple_index_label_series.yaml @@ -56,7 +56,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - 479c8893-48a3-4252-810c-6f21b8a3cb95 + - fd4d49c9-0020-4c30-aeba-6638d4bfbdbc X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -82,7 +82,7 @@ interactions: valueType: TEXT localIdentifier: dim_0 links: - executionResult: 6d363c8d2c4839e99cb6fbb6aec968bbb5e6a1c7:f9f06c3e4ac60eb23bed110d6fcd452d120e2d173323caf660e2b2d950fd6299 + executionResult: 650082acd9479285addbfa1cd32fe6537f8c7831:3d9aa71cd3cd52590f55292261a55926bc701144dcc8531e84021871bf406ca2 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -189,7 +189,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6d363c8d2c4839e99cb6fbb6aec968bbb5e6a1c7%3Af9f06c3e4ac60eb23bed110d6fcd452d120e2d173323caf660e2b2d950fd6299?offset=0&limit=1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/650082acd9479285addbfa1cd32fe6537f8c7831%3A3d9aa71cd3cd52590f55292261a55926bc701144dcc8531e84021871bf406ca2?offset=0&limit=1000 body: null headers: Accept: diff --git a/packages/gooddata-pandas/tests/series/fixtures/simple_index_metric_series.yaml b/packages/gooddata-pandas/tests/series/fixtures/simple_index_metric_series.yaml index 865a2479f..fb4c8e69e 100644 --- a/packages/gooddata-pandas/tests/series/fixtures/simple_index_metric_series.yaml +++ b/packages/gooddata-pandas/tests/series/fixtures/simple_index_metric_series.yaml @@ -69,7 +69,7 @@ interactions: X-Content-Type-Options: - nosniff X-Gdc-Cancel-Token: - - d27107a7-9600-4ff5-9cc4-ff6db9a77785 + - babd5b6f-a82e-4aa2-94a9-ef3a6e077c2b X-GDC-TRACE-ID: *id001 X-Xss-Protection: - '0' @@ -99,7 +99,7 @@ interactions: valueType: TEXT localIdentifier: dim_1 links: - executionResult: 6223b85178815264a0989a3256955db64f6a4cc1:1e6b926d89279587608d32e54880b2cd88e667dcce02912609cc65edfcf650f4 + executionResult: 88109555880bc4e0c46800051a253a83e8f30389:c443873fd360427284ab7f923f1fa3b875af31e347b2a91570cc627f89ea15f4 - request: method: GET uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3Din%3D%28region%29&page=0&size=500 @@ -206,7 +206,7 @@ interactions: next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&filter=labels.id%3D%3D%27region%27&page=1&size=500 - request: method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/6223b85178815264a0989a3256955db64f6a4cc1%3A1e6b926d89279587608d32e54880b2cd88e667dcce02912609cc65edfcf650f4?offset=0%2C0&limit=1%2C1000 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute/result/88109555880bc4e0c46800051a253a83e8f30389%3Ac443873fd360427284ab7f923f1fa3b875af31e347b2a91570cc627f89ea15f4?offset=0%2C0&limit=1%2C1000 body: null headers: Accept: diff --git a/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model.json b/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model.json index 472aa36c1..1c29509de 100644 --- a/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model.json +++ b/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model.json @@ -69,17 +69,17 @@ }, "version": "2" }, + "id": "campaign", + "title": "Campaign", + "description": "", "permissions": [ { + "name": "VIEW", "assigneeRule": { "type": "allWorkspaceUsers" - }, - "name": "VIEW" + } } - ], - "description": "", - "id": "campaign", - "title": "Campaign" + ] }, { "content": { @@ -353,9 +353,9 @@ }, "version": "2" }, - "description": "", "id": "product_and_category", - "title": "Product & Category" + "title": "Product & Category", + "description": "" } ], "analyticalDashboardExtensions": [], @@ -366,18 +366,18 @@ "url": "https://www.example.com", "version": "2" }, - "description": "Testing record dashboard_plugin_1", "id": "dashboard_plugin_1", - "title": "dashboard_plugin_1" + "title": "dashboard_plugin_1", + "description": "Testing record dashboard_plugin_1" }, { "content": { "url": "https://www.example.com", "version": "2" }, - "description": "Testing record dashboard_plugin_2", "id": "dashboard_plugin_2", - "title": "dashboard_plugin_2" + "title": "dashboard_plugin_2", + "description": "Testing record dashboard_plugin_2" } ], "filterContexts": [ @@ -411,9 +411,9 @@ ], "version": "2" }, - "description": "", "id": "campaign_name_filter", - "title": "filterContext" + "title": "filterContext", + "description": "" }, { "content": { @@ -437,12 +437,11 @@ ], "version": "2" }, - "description": "", "id": "region_filter", - "title": "filterContext" + "title": "filterContext", + "description": "" } ], - "memoryItems": [], "metrics": [ { "content": { @@ -473,9 +472,9 @@ "format": "#,##0.00", "maql": "SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN (\"Returned\", \"Canceled\"))" }, - "description": "", "id": "amount_of_valid_orders", - "title": "# of Valid Orders" + "title": "# of Valid Orders", + "description": "" }, { "content": { @@ -554,9 +553,9 @@ "format": "$#,##0", "maql": "SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN (\"Returned\", \"Canceled\"))" }, - "description": "", "id": "revenue", - "title": "Revenue" + "title": "Revenue", + "description": "" }, { "content": { @@ -827,9 +826,9 @@ "type": "dataset" } }, - "from": -11, + "from": -12, "granularity": "GDC.time.month", - "to": 0 + "to": -1 } } ], @@ -2251,6 +2250,8 @@ "title": "Top 10 Products" } ], - "exportDefinitions": [] + "exportDefinitions": [], + "memoryItems": [], + "parameters": [] } } diff --git a/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model_child.json b/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model_child.json index 4e25b90ae..15d9f3fd2 100644 --- a/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model_child.json +++ b/packages/gooddata-sdk/tests/catalog/expected/declarative_analytics_model_child.json @@ -6,10 +6,10 @@ "id": "campaign", "permissions": [ { + "name": "VIEW", "assigneeRule": { "type": "allWorkspaceUsers" - }, - "name": "VIEW" + } } ] } @@ -17,9 +17,10 @@ "attributeHierarchies": [], "dashboardPlugins": [], "filterContexts": [], - "memoryItems": [], "metrics": [], "visualizationObjects": [], - "exportDefinitions": [] + "exportDefinitions": [], + "memoryItems": [], + "parameters": [] } } diff --git a/packages/gooddata-sdk/tests/catalog/expected/declarative_ldm.json b/packages/gooddata-sdk/tests/catalog/expected/declarative_ldm.json index 74a50f800..7a914f5cb 100644 --- a/packages/gooddata-sdk/tests/catalog/expected/declarative_ldm.json +++ b/packages/gooddata-sdk/tests/catalog/expected/declarative_ldm.json @@ -2,112 +2,142 @@ "ldm": { "datasets": [ { - "aggregatedFacts": [], + "grain": [ + { + "id": "campaign_channel_id", + "type": "attribute" + } + ], + "id": "campaign_channels", + "references": [ + { + "identifier": { + "id": "campaigns", + "type": "dataset" + }, + "multivalue": false, + "sources": [ + { + "column": "campaign_id", + "target": { + "id": "campaign_id", + "type": "attribute" + }, + "dataType": "INT", + "isNullable": true + } + ] + } + ], + "title": "Campaign channels", + "description": "Campaign channels", "attributes": [ { - "description": "Campaign channel id", "id": "campaign_channel_id", "labels": [], "sourceColumn": "campaign_channel_id", + "title": "Campaign channel id", "sourceColumnDataType": "STRING", + "description": "Campaign channel id", "tags": [ "Campaign channels" ], - "title": "Campaign channel id" + "isNullable": false }, { - "description": "Category", "id": "campaign_channels.category", "labels": [], "sourceColumn": "category", + "title": "Category", "sourceColumnDataType": "STRING", + "description": "Category", "tags": [ "Campaign channels" ], - "title": "Category" + "isNullable": true }, { - "description": "Type", "id": "type", "labels": [], "sourceColumn": "type", + "title": "Type", "sourceColumnDataType": "STRING", + "description": "Type", "tags": [ "Campaign channels" ], - "title": "Type" + "isNullable": true } ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "campaign_channels", - "path": [ - "demo", - "campaign_channels" - ], - "type": "dataSource" - }, - "description": "Campaign channels", "facts": [ { - "description": "Budget", "id": "budget", "sourceColumn": "budget", + "title": "Budget", "sourceColumnDataType": "NUMERIC", + "description": "Budget", "tags": [ "Campaign channels" ], - "title": "Budget" + "isNullable": true }, { - "description": "Spend", "id": "spend", "sourceColumn": "spend", + "title": "Spend", "sourceColumnDataType": "NUMERIC", + "description": "Spend", "tags": [ "Campaign channels" ], - "title": "Spend" + "isNullable": true } ], - "grain": [ - { - "id": "campaign_channel_id", - "type": "attribute" - } - ], - "id": "campaign_channels", + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "campaign_channels", + "type": "dataSource", + "path": [ + "demo", + "campaign_channels" + ] + }, + "tags": [ + "Campaign channels" + ] + }, + { + "grain": [], + "id": "campaign_channels_per_category", "references": [ { "identifier": { - "id": "campaigns", + "id": "campaign_channels", "type": "dataset" }, "multivalue": false, "sources": [ { - "column": "campaign_id", - "dataType": "INT", + "column": "campaign_channel_id", "target": { - "id": "campaign_id", + "id": "campaign_channel_id", "type": "attribute" - } + }, + "dataType": "STRING", + "isNullable": true } ] } ], - "tags": [ - "Campaign channels" - ], - "title": "Campaign channels" - }, - { + "title": "Campaign channels per category", + "description": "Campaign channels per categories", + "attributes": [], + "facts": [], "aggregatedFacts": [ { - "description": "Budget Agg", "id": "budget_agg", "sourceColumn": "budget", - "sourceColumnDataType": "INT", "sourceFactReference": { "operation": "SUM", "reference": { @@ -115,248 +145,164 @@ "type": "fact" } }, + "sourceColumnDataType": "INT", + "description": "Budget Agg", "tags": [ "Campaign channels per category" ] } ], - "attributes": [], - "description": "Campaign channels per categories", - "facts": [], - "grain": [], - "id": "campaign_channels_per_category", "precedence": 1, - "references": [ - { - "identifier": { - "id": "campaign_channels", - "type": "dataset" - }, - "multivalue": false, - "sources": [ - { - "column": "campaign_channel_id", - "dataType": "STRING", - "target": { - "id": "campaign_channel_id", - "type": "attribute" - } - } - ] - } - ], "sql": { "dataSourceId": "demo-test-ds", "statement": "SELECT category, SUM(budget) FROM campaign_channels GROUP BY category" }, "tags": [ "Campaign channels per category" - ], - "title": "Campaign channels per category" + ] }, { - "aggregatedFacts": [], + "grain": [ + { + "id": "campaign_id", + "type": "attribute" + } + ], + "id": "campaigns", + "references": [], + "title": "Campaigns", + "description": "Campaigns", "attributes": [ { - "description": "Campaign id", "id": "campaign_id", "labels": [], "sourceColumn": "campaign_id", + "title": "Campaign id", "sourceColumnDataType": "INT", + "description": "Campaign id", "tags": [ "Campaigns" ], - "title": "Campaign id" + "isNullable": false }, { - "description": "Campaign name", "id": "campaign_name", "labels": [], "sourceColumn": "campaign_name", + "title": "Campaign name", "sourceColumnDataType": "STRING", + "description": "Campaign name", "tags": [ "Campaigns" ], - "title": "Campaign name" + "isNullable": true } ], + "facts": [], + "aggregatedFacts": [], "dataSourceTableId": { "dataSourceId": "demo-test-ds", "id": "campaigns", + "type": "dataSource", "path": [ "demo", "campaigns" - ], - "type": "dataSource" + ] }, - "description": "Campaigns", - "facts": [], + "tags": [ + "Campaigns" + ] + }, + { "grain": [ { - "id": "campaign_id", + "id": "customer_id", "type": "attribute" } ], - "id": "campaigns", + "id": "customers", "references": [], - "tags": [ - "Campaigns" - ], - "title": "Campaigns" - }, - { - "aggregatedFacts": [], + "title": "Customers", + "description": "Customers", "attributes": [ { - "description": "Customer id", "id": "customer_id", "labels": [], "sourceColumn": "customer_id", + "title": "Customer id", "sourceColumnDataType": "INT", + "description": "Customer id", "tags": [ "Customers" ], - "title": "Customer id" + "isNullable": false }, { - "description": "Customer name", "id": "customer_name", "labels": [], "sourceColumn": "customer_name", + "title": "Customer name", "sourceColumnDataType": "STRING", + "description": "Customer name", "tags": [ "Customers" ], - "title": "Customer name" + "isNullable": true }, { - "description": "Region", "id": "region", "labels": [], "sourceColumn": "region", + "title": "Region", "sourceColumnDataType": "STRING", + "description": "Region", "tags": [ "Customers" ], - "title": "Region" + "isNullable": true }, { - "description": "State", "id": "state", "labels": [ { - "description": "Location", "id": "geo__state__location", "sourceColumn": "geo__state__location", + "title": "Location", "sourceColumnDataType": "STRING", + "description": "Location", "tags": [ "Customers" ], - "title": "Location", - "valueType": "GEO" + "valueType": "GEO", + "isNullable": true } ], "sourceColumn": "state", + "title": "State", "sourceColumnDataType": "STRING", + "description": "State", "tags": [ "Customers" ], - "title": "State" + "isNullable": true } ], + "facts": [], + "aggregatedFacts": [], "dataSourceTableId": { "dataSourceId": "demo-test-ds", "id": "customers", + "type": "dataSource", "path": [ "demo", "customers" - ], - "type": "dataSource" + ] }, - "description": "Customers", - "facts": [], - "grain": [ - { - "id": "customer_id", - "type": "attribute" - } - ], - "id": "customers", - "references": [], "tags": [ "Customers" - ], - "title": "Customers" + ] }, { - "aggregatedFacts": [], - "attributes": [ - { - "description": "Order id", - "id": "order_id", - "labels": [], - "sourceColumn": "order_id", - "sourceColumnDataType": "STRING", - "tags": [ - "Order lines" - ], - "title": "Order id" - }, - { - "description": "Order line id", - "id": "order_line_id", - "labels": [], - "sourceColumn": "order_line_id", - "sourceColumnDataType": "STRING", - "tags": [ - "Order lines" - ], - "title": "Order line id" - }, - { - "description": "Order status", - "id": "order_status", - "labels": [], - "sourceColumn": "order_status", - "sourceColumnDataType": "STRING", - "tags": [ - "Order lines" - ], - "title": "Order status" - } - ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "order_lines", - "path": [ - "demo", - "order_lines" - ], - "type": "dataSource" - }, - "description": "Order lines", - "facts": [ - { - "description": "Price", - "id": "price", - "sourceColumn": "price", - "sourceColumnDataType": "NUMERIC", - "tags": [ - "Order lines" - ], - "title": "Price" - }, - { - "description": "Quantity", - "id": "quantity", - "sourceColumn": "quantity", - "sourceColumnDataType": "NUMERIC", - "tags": [ - "Order lines" - ], - "title": "Quantity" - } - ], "grain": [ { "id": "order_line_id", @@ -374,11 +320,12 @@ "sources": [ { "column": "campaign_id", - "dataType": "INT", "target": { "id": "campaign_id", "type": "attribute" - } + }, + "dataType": "INT", + "isNullable": true } ] }, @@ -391,11 +338,12 @@ "sources": [ { "column": "customer_id", - "dataType": "INT", "target": { "id": "customer_id", "type": "attribute" - } + }, + "dataType": "INT", + "isNullable": true } ] }, @@ -408,11 +356,12 @@ "sources": [ { "column": "date", - "dataType": "DATE", "target": { "id": "date", "type": "date" - } + }, + "dataType": "DATE", + "isNullable": true } ] }, @@ -425,19 +374,93 @@ "sources": [ { "column": "product_id", - "dataType": "INT", "target": { "id": "product_id", "type": "attribute" - } + }, + "dataType": "INT", + "isNullable": true } ] } ], + "title": "Order lines", + "description": "Order lines", + "attributes": [ + { + "id": "order_id", + "labels": [], + "sourceColumn": "order_id", + "title": "Order id", + "sourceColumnDataType": "STRING", + "description": "Order id", + "tags": [ + "Order lines" + ], + "isNullable": true + }, + { + "id": "order_line_id", + "labels": [], + "sourceColumn": "order_line_id", + "title": "Order line id", + "sourceColumnDataType": "STRING", + "description": "Order line id", + "tags": [ + "Order lines" + ], + "isNullable": false + }, + { + "id": "order_status", + "labels": [], + "sourceColumn": "order_status", + "title": "Order status", + "sourceColumnDataType": "STRING", + "description": "Order status", + "tags": [ + "Order lines" + ], + "isNullable": true + } + ], + "facts": [ + { + "id": "price", + "sourceColumn": "price", + "title": "Price", + "sourceColumnDataType": "NUMERIC", + "description": "Price", + "tags": [ + "Order lines" + ], + "isNullable": true + }, + { + "id": "quantity", + "sourceColumn": "quantity", + "title": "Quantity", + "sourceColumnDataType": "NUMERIC", + "description": "Quantity", + "tags": [ + "Order lines" + ], + "isNullable": true + } + ], + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "order_lines", + "type": "dataSource", + "path": [ + "demo", + "order_lines" + ] + }, "tags": [ "Order lines" ], - "title": "Order lines", "workspaceDataFilterColumns": [ { "dataType": "STRING", @@ -460,70 +483,72 @@ ] }, { - "aggregatedFacts": [], + "grain": [ + { + "id": "product_id", + "type": "attribute" + } + ], + "id": "products", + "references": [], + "title": "Products", + "description": "Products", "attributes": [ { - "description": "Product id", "id": "product_id", "labels": [], "sourceColumn": "product_id", + "title": "Product id", "sourceColumnDataType": "INT", + "description": "Product id", "tags": [ "Products" ], - "title": "Product id" + "isNullable": false }, { - "description": "Product name", "id": "product_name", "labels": [], "sourceColumn": "product_name", + "title": "Product name", "sourceColumnDataType": "STRING", + "description": "Product name", "tags": [ "Products" ], - "title": "Product name" + "isNullable": true }, { - "description": "Category", "id": "products.category", "labels": [], "sourceColumn": "category", + "title": "Category", "sourceColumnDataType": "STRING", + "description": "Category", "tags": [ "Products" ], - "title": "Category" + "isNullable": true } ], + "facts": [], + "aggregatedFacts": [], "dataSourceTableId": { "dataSourceId": "demo-test-ds", "id": "products", + "type": "dataSource", "path": [ "demo", "products" - ], - "type": "dataSource" + ] }, - "description": "Products", - "facts": [], - "grain": [ - { - "id": "product_id", - "type": "attribute" - } - ], - "id": "products", - "references": [], "tags": [ "Products" - ], - "title": "Products" + ] } ], "dateInstances": [ { - "description": "", "granularities": [ "DAY", "WEEK", @@ -536,10 +561,11 @@ "titlePattern": "%titleBase - %granularityTitle" }, "id": "date", + "title": "Date", + "description": "", "tags": [ "Date" - ], - "title": "Date" + ] } ] } diff --git a/packages/gooddata-sdk/tests/catalog/expected/declarative_workspaces_snake_case.json b/packages/gooddata-sdk/tests/catalog/expected/declarative_workspaces_snake_case.json index 2724d7f0a..18ed0ff0e 100644 --- a/packages/gooddata-sdk/tests/catalog/expected/declarative_workspaces_snake_case.json +++ b/packages/gooddata-sdk/tests/catalog/expected/declarative_workspaces_snake_case.json @@ -28,7 +28,8 @@ "id": "campaign_id", "type": "attribute" }, - "data_type": "INT" + "data_type": "INT", + "is_nullable": true } ] } @@ -44,7 +45,8 @@ "description": "Campaign channel id", "tags": [ "Campaign channels" - ] + ], + "is_nullable": false }, { "id": "campaign_channels.category", @@ -55,7 +57,8 @@ "description": "Category", "tags": [ "Campaign channels" - ] + ], + "is_nullable": true }, { "id": "type", @@ -66,7 +69,8 @@ "description": "Type", "tags": [ "Campaign channels" - ] + ], + "is_nullable": true } ], "facts": [ @@ -78,7 +82,8 @@ "description": "Budget", "tags": [ "Campaign channels" - ] + ], + "is_nullable": true }, { "id": "spend", @@ -88,7 +93,8 @@ "description": "Spend", "tags": [ "Campaign channels" - ] + ], + "is_nullable": true } ], "aggregated_facts": [], @@ -121,7 +127,8 @@ "id": "campaign_channel_id", "type": "attribute" }, - "data_type": "STRING" + "data_type": "STRING", + "is_nullable": true } ] } @@ -132,9 +139,7 @@ "aggregated_facts": [ { "id": "budget_agg", - "description": "Budget Agg", "source_column": "budget", - "source_column_data_type": "INT", "source_fact_reference": { "operation": "SUM", "reference": { @@ -142,6 +147,8 @@ "type": "fact" } }, + "source_column_data_type": "INT", + "description": "Budget Agg", "tags": [ "Campaign channels per category" ] @@ -149,8 +156,8 @@ ], "precedence": 1, "sql": { - "data_source_id": "demo-test-ds", - "statement": "SELECT category, SUM(budget) FROM campaign_channels GROUP BY category" + "statement": "SELECT category, SUM(budget) FROM campaign_channels GROUP BY category", + "data_source_id": "demo-test-ds" }, "tags": [ "Campaign channels per category" @@ -177,7 +184,8 @@ "description": "Campaign id", "tags": [ "Campaigns" - ] + ], + "is_nullable": false }, { "id": "campaign_name", @@ -188,7 +196,8 @@ "description": "Campaign name", "tags": [ "Campaigns" - ] + ], + "is_nullable": true } ], "facts": [], @@ -226,7 +235,8 @@ "description": "Customer id", "tags": [ "Customers" - ] + ], + "is_nullable": false }, { "id": "customer_name", @@ -237,7 +247,8 @@ "description": "Customer name", "tags": [ "Customers" - ] + ], + "is_nullable": true }, { "id": "region", @@ -248,7 +259,8 @@ "description": "Region", "tags": [ "Customers" - ] + ], + "is_nullable": true }, { "id": "state", @@ -264,14 +276,16 @@ "tags": [ "Customers" ], - "value_type": "GEO" + "value_type": "GEO", + "is_nullable": true } ], "source_column_data_type": "STRING", "description": "State", "tags": [ "Customers" - ] + ], + "is_nullable": true } ], "facts": [], @@ -310,7 +324,8 @@ "id": "campaign_id", "type": "attribute" }, - "data_type": "INT" + "data_type": "INT", + "is_nullable": true } ] }, @@ -326,7 +341,8 @@ "id": "customer_id", "type": "attribute" }, - "data_type": "INT" + "data_type": "INT", + "is_nullable": true } ] }, @@ -342,7 +358,8 @@ "id": "date", "type": "date" }, - "data_type": "DATE" + "data_type": "DATE", + "is_nullable": true } ] }, @@ -358,7 +375,8 @@ "id": "product_id", "type": "attribute" }, - "data_type": "INT" + "data_type": "INT", + "is_nullable": true } ] } @@ -374,7 +392,8 @@ "description": "Order id", "tags": [ "Order lines" - ] + ], + "is_nullable": true }, { "id": "order_line_id", @@ -385,7 +404,8 @@ "description": "Order line id", "tags": [ "Order lines" - ] + ], + "is_nullable": false }, { "id": "order_status", @@ -396,7 +416,8 @@ "description": "Order status", "tags": [ "Order lines" - ] + ], + "is_nullable": true } ], "facts": [ @@ -408,7 +429,8 @@ "description": "Price", "tags": [ "Order lines" - ] + ], + "is_nullable": true }, { "id": "quantity", @@ -418,7 +440,8 @@ "description": "Quantity", "tags": [ "Order lines" - ] + ], + "is_nullable": true } ], "aggregated_facts": [], @@ -474,7 +497,8 @@ "description": "Product id", "tags": [ "Products" - ] + ], + "is_nullable": false }, { "id": "product_name", @@ -485,7 +509,8 @@ "description": "Product name", "tags": [ "Products" - ] + ], + "is_nullable": true }, { "id": "products.category", @@ -496,7 +521,8 @@ "description": "Category", "tags": [ "Products" - ] + ], + "is_nullable": true } ], "facts": [], @@ -1365,9 +1391,9 @@ "type": "dataset" } }, - "from": -11, + "from": -12, "granularity": "GDC.time.month", - "to": 0 + "to": -1 } } ], @@ -2788,7 +2814,8 @@ } ], "export_definitions": [], - "memory_items": [] + "memory_items": [], + "parameters": [] } }, "permissions": [ @@ -2872,7 +2899,8 @@ "metrics": [], "visualization_objects": [], "export_definitions": [], - "memory_items": [] + "memory_items": [], + "parameters": [] } }, "parent": { @@ -2903,7 +2931,8 @@ "metrics": [], "visualization_objects": [], "export_definitions": [], - "memory_items": [] + "memory_items": [], + "parameters": [] } }, "parent": { diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml index a2f4653d7..97506f49e 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 75b2e3acd14d4e826d38134001054219 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,36 +37,31 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 44090248ebeaaf0e0abcad0c0042d810 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test - schema: demo - type: BIGQUERY - token: eyJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsICJwcm9qZWN0X2lkIjogIlBST0pFQ1RfSUQiLCAicHJpdmF0ZV9rZXlfaWQiOiAiS0VZX0lEIiwgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxcblBSSVZBVEVfS0VZXFxuLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLVxcbiIsICJjbGllbnRfZW1haWwiOiAiU0VSVklDRV9BQ0NPVU5UX0VNQUlMIiwgImNsaWVudF9pZCI6ICJDTElFTlRfSUQiLCAiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLCAidG9rZW5fdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsICJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvU0VSVklDRV9BQ0NPVU5UX0VNQUlMIn0= parameters: - name: projectId value: abc + schema: demo + token: eyJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsICJwcm9qZWN0X2lkIjogIlBST0pFQ1RfSUQiLCAicHJpdmF0ZV9rZXlfaWQiOiAiS0VZX0lEIiwgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxcblBSSVZBVEVfS0VZXFxuLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLVxcbiIsICJjbGllbnRfZW1haWwiOiAiU0VSVklDRV9BQ0NPVU5UX0VNQUlMIiwgImNsaWVudF9pZCI6ICJDTElFTlRfSUQiLCAiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLCAidG9rZW5fdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsICJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvU0VSVklDRV9BQ0NPVU5UX0VNQUlMIn0= + type: BIGQUERY id: test type: dataSource headers: @@ -79,15 +75,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: TOKEN + decodedParameters: + - name: clientEmail + value: SERVICE_ACCOUNT_EMAIL + - name: keyId + value: KEY_ID + - name: projectId + value: PROJECT_ID + name: Test + parameters: + - name: projectId + value: abc + schema: demo + type: BIGQUERY + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '448' Content-Type: @@ -100,23 +115,39 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test + response: body: string: data: attributes: - parameters: - - name: projectId - value: abc + authenticationType: TOKEN decodedParameters: - name: clientEmail value: SERVICE_ACCOUNT_EMAIL @@ -124,36 +155,19 @@ interactions: value: KEY_ID - name: projectId value: PROJECT_ID - authenticationType: TOKEN name: Test - type: BIGQUERY + parameters: + - name: projectId + value: abc schema: demo + type: BIGQUERY id: test type: dataSource links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '448' Content-Type: @@ -166,41 +180,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - parameters: - - name: projectId - value: abc - decodedParameters: - - name: clientEmail - value: SERVICE_ACCOUNT_EMAIL - - name: keyId - value: KEY_ID - - name: projectId - value: PROJECT_ID - authenticationType: TOKEN - name: Test - type: BIGQUERY - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -209,15 +203,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -228,15 +221,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_cache_strategy.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_cache_strategy.yaml index cb870095b..17ff6bb47 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_cache_strategy.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_cache_strategy.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds body: null headers: Accept: @@ -14,15 +11,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '435' Content-Type: @@ -36,34 +45,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PATCH - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds body: data: attributes: @@ -83,15 +79,28 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PATCH + uri: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + cacheStrategy: NEVER + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha:5432/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '464' Content-Type: @@ -104,35 +113,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha:5432/tiger_tests?sslmode=prefer - username: postgres - cacheStrategy: NEVER - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds body: null headers: Accept: @@ -143,15 +138,28 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + cacheStrategy: NEVER + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha:5432/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '464' Content-Type: @@ -164,43 +172,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha:5432/tiger_tests?sslmode=prefer - username: postgres - cacheStrategy: NEVER - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -210,8 +202,10 @@ interactions: id: demoGroup type: userGroup name: USE - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -221,15 +215,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -238,15 +231,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_data_sources_list.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_data_sources_list.yaml index 950867826..fe787aa5d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_data_sources_list.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_data_sources_list.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds + type: dataSource + links: + next: http://localhost:3000/api/v1/entities/dataSources?page=1&size=500 + self: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '671' Content-Type: @@ -36,31 +48,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_delete_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_delete_declarative_data_sources.yaml index 23078119a..2f73ceedf 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_delete_declarative_data_sources.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_delete_declarative_data_sources.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: [] headers: @@ -15,15 +12,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -33,21 +29,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -58,15 +54,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK + body: + string: + dataSources: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '18' Content-Type: @@ -79,30 +75,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -112,8 +105,10 @@ interactions: id: demoGroup type: userGroup name: USE - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -123,15 +118,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -140,15 +134,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model.yaml index 18e86eb89..b1fee284f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -442,41 +407,69 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel body: - separator: __ - wdfPrefix: wdf pdm: tables: - columns: - dataType: NUMERIC - name: budget - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: budget - dataType: STRING - name: campaign_channel_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_channel_id - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: STRING - name: category - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: spend isPrimaryKey: false + name: category + - dataType: NUMERIC isNullable: true - - dataType: STRING - name: type isPrimaryKey: false + name: spend + - dataType: STRING isNullable: true + isPrimaryKey: false + name: type id: campaign_channels path: - demo @@ -484,13 +477,13 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_id - dataType: STRING - name: campaign_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: campaign_name id: campaigns path: - demo @@ -498,25 +491,25 @@ interactions: type: TABLE - columns: - dataType: INT - name: customer_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: customer_id - dataType: STRING - name: customer_name - isPrimaryKey: false isNullable: true - - dataType: STRING - name: geo__state__location isPrimaryKey: false - isNullable: true + name: customer_name - dataType: STRING - name: region - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: geo__state__location - dataType: STRING - name: state + isNullable: true isPrimaryKey: false + name: region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: state id: customers path: - demo @@ -524,55 +517,55 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: INT - name: customer_id + isNullable: true isPrimaryKey: false - referencedTableId: customers + name: customer_id referencedTableColumn: customer_id - isNullable: true + referencedTableId: customers - dataType: DATE - name: date - isPrimaryKey: false isNullable: true - - dataType: STRING - name: order_id isPrimaryKey: false + name: date + - dataType: STRING isNullable: true + isPrimaryKey: false + name: order_id - dataType: STRING - name: order_line_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: order_line_id - dataType: STRING - name: order_status - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: price isPrimaryKey: false + name: order_status + - dataType: NUMERIC isNullable: true + isPrimaryKey: false + name: price - dataType: INT - name: product_id + isNullable: true isPrimaryKey: false - referencedTableId: products + name: product_id referencedTableColumn: product_id - isNullable: true + referencedTableId: products - dataType: NUMERIC - name: quantity - isPrimaryKey: false isNullable: true - - dataType: STRING - name: wdf__region isPrimaryKey: false - isNullable: true + name: quantity - dataType: STRING - name: wdf__state + isNullable: true isPrimaryKey: false + name: wdf__region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: wdf__state id: order_lines path: - demo @@ -580,24 +573,26 @@ interactions: type: TABLE - columns: - dataType: STRING - name: category - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: category - dataType: INT - name: product_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: product_id - dataType: STRING - name: product_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: product_name id: products path: - demo - products type: TABLE - workspaceId: demo + separator: __ translationPrefix: tr + wdfPrefix: wdf + workspaceId: demo headers: Accept: - application/json @@ -609,40 +604,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -1009,3 +973,35 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1075' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model_sql_datasets.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model_sql_datasets.yaml index 3f8d72f59..d48bb5bd4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model_sql_datasets.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_generate_logical_model_sql_datasets.yaml @@ -1,17 +1,10 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel body: - separator: __ - wdfPrefix: wdf pdm: sqls: - - statement: SELECT * FROM order_lines - title: Order lines duplicate sql dataset - columns: + - columns: - dataType: STRING name: order_line_id - dataType: STRING @@ -30,9 +23,9 @@ interactions: name: price - dataType: NUMERIC name: quantity - - statement: SELECT * FROM v_wdf_customers - title: Customers sql dataset with WDF - columns: + statement: SELECT * FROM order_lines + title: Order lines duplicate sql dataset + - columns: - dataType: INT name: customer_id - dataType: STRING @@ -43,34 +36,36 @@ interactions: name: region - dataType: STRING name: wdf__region + statement: SELECT * FROM v_wdf_customers + title: Customers sql dataset with WDF tables: - columns: - dataType: NUMERIC - name: budget - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: budget - dataType: STRING - name: campaign_channel_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_channel_id - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: STRING - name: category - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: spend isPrimaryKey: false + name: category + - dataType: NUMERIC isNullable: true - - dataType: STRING - name: type isPrimaryKey: false + name: spend + - dataType: STRING isNullable: true + isPrimaryKey: false + name: type id: campaign_channels path: - demo @@ -78,13 +73,13 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_id - dataType: STRING - name: campaign_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: campaign_name id: campaigns path: - demo @@ -92,25 +87,25 @@ interactions: type: TABLE - columns: - dataType: INT - name: customer_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: customer_id - dataType: STRING - name: customer_name - isPrimaryKey: false isNullable: true - - dataType: STRING - name: geo__state__location isPrimaryKey: false - isNullable: true + name: customer_name - dataType: STRING - name: region - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: geo__state__location - dataType: STRING - name: state + isNullable: true isPrimaryKey: false + name: region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: state id: customers path: - demo @@ -118,55 +113,55 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: INT - name: customer_id + isNullable: true isPrimaryKey: false - referencedTableId: customers + name: customer_id referencedTableColumn: customer_id - isNullable: true + referencedTableId: customers - dataType: DATE - name: date - isPrimaryKey: false isNullable: true - - dataType: STRING - name: order_id isPrimaryKey: false + name: date + - dataType: STRING isNullable: true + isPrimaryKey: false + name: order_id - dataType: STRING - name: order_line_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: order_line_id - dataType: STRING - name: order_status - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: price isPrimaryKey: false + name: order_status + - dataType: NUMERIC isNullable: true + isPrimaryKey: false + name: price - dataType: INT - name: product_id + isNullable: true isPrimaryKey: false - referencedTableId: products + name: product_id referencedTableColumn: product_id - isNullable: true + referencedTableId: products - dataType: NUMERIC - name: quantity - isPrimaryKey: false isNullable: true - - dataType: STRING - name: wdf__region isPrimaryKey: false - isNullable: true + name: quantity - dataType: STRING - name: wdf__state + isNullable: true isPrimaryKey: false + name: wdf__region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: wdf__state id: order_lines path: - demo @@ -174,22 +169,24 @@ interactions: type: TABLE - columns: - dataType: STRING - name: category - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: category - dataType: INT - name: product_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: product_id - dataType: STRING - name: product_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: product_name id: products path: - demo - products type: TABLE + separator: __ + wdfPrefix: wdf headers: Accept: - application/json @@ -201,41 +198,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -729,3 +694,36 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1374' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml index 3960a76cd..c2c797249 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_load_and_put_declarative_data_sources.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: [] headers: @@ -15,15 +12,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -33,21 +29,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -56,15 +52,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -73,27 +68,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -102,15 +97,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -123,62 +138,38 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-bigquery-ds + - decodedParameters: + - name: clientEmail + value: fake email + id: demo-bigquery-ds name: demo-bigquery-ds - schema: demo - type: BIGQUERY parameters: - name: projectId value: projectId-value-override - decodedParameters: - - name: clientEmail - value: fake email permissions: [] + schema: demo token: eyJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsICJwcm9qZWN0X2lkIjogIlBST0pFQ1RfSUQiLCAicHJpdmF0ZV9rZXlfaWQiOiAiS0VZX0lEIiwgInByaXZhdGVfa2V5IjogIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVxuUFJJVkFURV9LRVlcbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cbiIsICJjbGllbnRfZW1haWwiOiAiU0VSVklDRV9BQ0NPVU5UX0VNQUlMIiwgImNsaWVudF9pZCI6ICJDTElFTlRfSUQiLCAiYXV0aF91cmkiOiAiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL28vb2F1dGgyL2F1dGgiLCAidG9rZW5fdXJpIjogImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbiIsICJhdXRoX3Byb3ZpZGVyX3g1MDlfY2VydF91cmwiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YxL2NlcnRzIiwgImNsaWVudF94NTA5X2NlcnRfdXJsIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3JvYm90L3YxL21ldGFkYXRhL3g1MDkvU0VSVklDRV9BQ0NPVU5UX0VNQUlMIn0= + type: BIGQUERY - id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -188,12 +179,14 @@ interactions: id: demoGroup type: userGroup name: USE - password: secret - - id: demo-test-ds-databricks-client-secret - name: demo-test-ds-databricks-client-secret schema: demo - type: DATABRICKS - url: jdbc:databricks://dbc-1234-abc.cloud.databricks.com:443;httpPath=/sql/1.0/warehouses/9876fdsa; + type: POSTGRESQL + url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer + username: postgres + - clientId: client-id + clientSecret: databricks-client-secret + id: demo-test-ds-databricks-client-secret + name: demo-test-ds-databricks-client-secret parameters: - name: catalog value: demo @@ -206,13 +199,11 @@ interactions: id: demoGroup type: userGroup name: USE - clientId: client-id - clientSecret: databricks-client-secret - - id: demo-test-ds-databricks-token - name: demo-test-ds-databricks-token schema: demo type: DATABRICKS url: jdbc:databricks://dbc-1234-abc.cloud.databricks.com:443;httpPath=/sql/1.0/warehouses/9876fdsa; + - id: demo-test-ds-databricks-token + name: demo-test-ds-databricks-token parameters: - name: catalog value: demo @@ -225,13 +216,16 @@ interactions: id: demoGroup type: userGroup name: USE + schema: demo token: databricks-token + type: DATABRICKS + url: jdbc:databricks://dbc-1234-abc.cloud.databricks.com:443;httpPath=/sql/1.0/warehouses/9876fdsa; - id: demo-vertica-ds name: demo-vertica-ds + permissions: [] schema: demo type: VERTICA url: jdbc:vertica://localhost:5434/demo - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -241,15 +235,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -258,21 +251,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -283,40 +276,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: dataSources: @@ -395,17 +357,44 @@ interactions: schema: demo type: VERTICA url: jdbc:vertica://localhost:5434/demo + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '548' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -415,8 +404,10 @@ interactions: id: demoGroup type: userGroup name: USE - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgres:5432/tiger?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -426,15 +417,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -443,15 +433,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml index 601a25aa8..c03e5e6a7 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -14,15 +11,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds + name: demo-test-ds + permissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: USE + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '428' Content-Type: @@ -36,47 +50,28 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - alternativeDataSourceId: ds-put-abc-id - authenticationType: USERNAME_PASSWORD - id: demo-test-ds - name: demo-test-ds - permissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: USE - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -86,9 +81,10 @@ interactions: id: demoGroup type: userGroup name: USE - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -98,15 +94,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -115,21 +110,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -140,15 +135,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds + name: demo-test-ds + permissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: USE + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '428' Content-Type: @@ -161,47 +173,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - alternativeDataSourceId: ds-put-abc-id - authenticationType: USERNAME_PASSWORD - id: demo-test-ds - name: demo-test-ds - permissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: USE - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -211,8 +203,10 @@ interactions: id: demoGroup type: userGroup name: USE - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -222,15 +216,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -239,15 +232,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml index e52389d1c..9f31b75e9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -14,15 +11,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds + name: demo-test-ds + permissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: USE + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '428' Content-Type: @@ -36,44 +50,26 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - alternativeDataSourceId: ds-put-abc-id - authenticationType: USERNAME_PASSWORD - id: demo-test-ds - name: demo-test-ds - permissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: USE - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSource/test body: + password: secret + schema: demo type: POSTGRESQL url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - schema: demo - password: secret username: postgres headers: Accept: @@ -86,17 +82,20 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSource/test response: - status: - code: 200 - message: OK + body: + string: + queryDurationMillis: + createCacheTable: 0 + simpleSelect: 201 + successful: true headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '82' + - '83' Content-Type: - application/json DATE: *id001 @@ -107,33 +106,28 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - queryDurationMillis: - createCacheTable: 0 - simpleSelect: 12 - successful: true + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -143,9 +137,10 @@ interactions: id: demoGroup type: userGroup name: USE - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -155,15 +150,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -172,21 +166,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -197,15 +191,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds + name: demo-test-ds + permissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: USE + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '428' Content-Type: @@ -218,47 +229,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - alternativeDataSourceId: ds-put-abc-id - authenticationType: USERNAME_PASSWORD - id: demo-test-ds - name: demo-test-ds - permissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: USE - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: dataSources: - - id: demo-test-ds + - alternativeDataSourceId: ds-put-abc-id + id: demo-test-ds name: demo-test-ds - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + password: secret permissions: - assignee: id: demo2 @@ -268,8 +259,10 @@ interactions: id: demoGroup type: userGroup name: USE - alternativeDataSourceId: ds-put-abc-id - password: secret + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Accept-Encoding: - br, gzip, deflate @@ -279,15 +272,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -296,15 +288,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml index 815ade76b..7b97df7eb 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 body: null headers: Accept: @@ -14,425 +11,423 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: '# of Active Customers' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) createdAt: 2025-08-07 11:45 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Orders' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) createdAt: 2025-08-07 11:45 + title: '# of Orders' id: amount_of_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Top Customers' areRelationsValid: true content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' createdAt: 2025-08-07 11:45 + title: '# of Top Customers' id: amount_of_top_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Valid Orders' - description: '' areRelationsValid: true content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) createdAt: 2025-08-07 11:45 + description: '' + title: '# of Valid Orders' id: amount_of_valid_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Campaign Spend areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/spend}) createdAt: 2025-08-07 11:45 + title: Campaign Spend id: campaign_spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/campaign_spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/campaign_spend meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Order Amount areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) createdAt: 2025-08-07 11:45 + title: Order Amount id: order_amount links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/order_amount + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/order_amount meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} createdAt: 2025-08-07 11:45 + title: '% Revenue' id: percent_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" createdAt: 2025-08-07 11:45 + title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" createdAt: 2025-08-07 11:45 + title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" createdAt: 2025-08-07 11:45 + title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" createdAt: 2025-08-07 11:45 + title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue in Category' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) createdAt: 2025-08-07 11:45 + title: '% Revenue in Category' id: percent_revenue_in_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue per Product' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) createdAt: 2025-08-07 11:45 + title: '% Revenue per Product' id: percent_revenue_per_product links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue - description: '' areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) createdAt: 2025-08-07 11:45 + description: '' + title: Revenue id: revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Clothing) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") createdAt: 2025-08-07 11:45 + title: Revenue (Clothing) id: revenue-clothing links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-clothing + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-clothing meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Electronic) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") createdAt: 2025-08-07 11:45 + title: Revenue (Electronic) id: revenue-electronic links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-electronic + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-electronic meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Home) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") createdAt: 2025-08-07 11:45 + title: Revenue (Home) id: revenue-home links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-home + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-home meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Outdoor) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") createdAt: 2025-08-07 11:45 + title: Revenue (Outdoor) id: revenue-outdoor links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-outdoor + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-outdoor meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Customer areRelationsValid: true content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) createdAt: 2025-08-07 11:45 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Dollar Spent areRelationsValid: true content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} createdAt: 2025-08-07 11:45 + title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10 areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) createdAt: 2025-08-07 11:45 + title: Revenue / Top 10 id: revenue_top_10 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10 meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10% areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) createdAt: 2025-08-07 11:45 + title: Revenue / Top 10% id: revenue_top_10_percent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER createdAt: 2025-08-07 11:45 + title: Total Revenue id: total_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue (No Filters) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER createdAt: 2025-08-07 11:45 + title: Total Revenue (No Filters) id: total_revenue-no_filters links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters meta: origin: originId: demo originType: NATIVE type: metric links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1089' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/afm/execute body: execution: attributes: [] @@ -440,12 +435,12 @@ interactions: measures: - definition: measure: + computeRatio: false + filters: [] item: identifier: id: amount_of_active_customers type: metric - computeRatio: false - filters: [] localIdentifier: amount_of_active_customers resultSpec: dimensions: @@ -463,15 +458,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute response: - status: - code: 200 - message: OK + body: + string: + executionResponse: + dimensions: + - headers: + - measureGroupHeaders: + - format: '#,##0' + localIdentifier: amount_of_active_customers + name: '# of Active Customers' + localIdentifier: dim_0 + links: + executionResult: 2fcdbb2f2abe941ca5c0e61ec6f94c1e2b4fb23e:ae5b67bbf51c98014dc42c2c8cd953c9911c20fbe8f9fc40545742dd9072c394 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '337' Content-Type: @@ -484,33 +488,22 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff - X-GDC-CANCEL-TOKEN: - - cc351094-43f7-4004-bde7-2576aaab112c + X-GDC-CANCEL-TOKEN: *id001 X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - executionResponse: - dimensions: - - headers: - - measureGroupHeaders: - - localIdentifier: amount_of_active_customers - format: '#,##0' - name: '# of Active Customers' - localIdentifier: dim_0 - links: - executionResult: e634429a8a94a8d8cd6515382f18f80ce12964e9:116165a10ca5e19f7e2bd5b45348106f14d72eebe522316b25231881371f5532 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/uploadNotification body: null headers: Accept-Encoding: @@ -521,15 +514,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/uploadNotification response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -538,21 +530,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/afm/execute body: execution: attributes: [] @@ -560,12 +552,12 @@ interactions: measures: - definition: measure: + computeRatio: false + filters: [] item: identifier: id: amount_of_active_customers type: metric - computeRatio: false - filters: [] localIdentifier: amount_of_active_customers resultSpec: dimensions: @@ -583,15 +575,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute response: - status: - code: 200 - message: OK + body: + string: + executionResponse: + dimensions: + - headers: + - measureGroupHeaders: + - format: '#,##0' + localIdentifier: amount_of_active_customers + name: '# of Active Customers' + localIdentifier: dim_0 + links: + executionResult: 90421cbd60639e7c8ee0ca1389e167cbae092b8e:2e7aa7b2ed8e1600878abaf28e26d6670f1ae3c7921062f64f34c965b9fd53a4 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '337' Content-Type: @@ -604,27 +605,19 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff - X-GDC-CANCEL-TOKEN: - - 02b25b56-c095-4194-b44a-3b60bfea80d7 + X-GDC-CANCEL-TOKEN: *id001 X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - executionResponse: - dimensions: - - headers: - - measureGroupHeaders: - - localIdentifier: amount_of_active_customers - format: '#,##0' - name: '# of Active Customers' - localIdentifier: dim_0 - links: - executionResult: d84cf434cc6800215a21e7a7e7a068ff39aedb97:db64173e3a46017a3d797d326733ad85612fbf595ff97885d7f96b5549dd4203 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model.yaml index e2719172f..8005b21ff 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -442,38 +407,17 @@ interactions: tags: - Date title: Date - - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scan - body: - scanTables: true - scanViews: false - separator: __ - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1196' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -481,9 +425,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -492,8 +434,30 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + scanTables: true + scanViews: false + separator: __ + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scan + response: body: string: pdm: @@ -645,41 +609,68 @@ interactions: - products type: TABLE warnings: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '413' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel body: - separator: __ - wdfPrefix: wdf pdm: tables: - columns: - dataType: NUMERIC - name: budget - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: budget - dataType: STRING - name: campaign_channel_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_channel_id - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: STRING - name: category - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: spend isPrimaryKey: false + name: category + - dataType: NUMERIC isNullable: true - - dataType: STRING - name: type isPrimaryKey: false + name: spend + - dataType: STRING isNullable: true + isPrimaryKey: false + name: type id: campaign_channels path: - demo @@ -687,13 +678,13 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_id - dataType: STRING - name: campaign_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: campaign_name id: campaigns path: - demo @@ -701,25 +692,25 @@ interactions: type: TABLE - columns: - dataType: INT - name: customer_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: customer_id - dataType: STRING - name: customer_name - isPrimaryKey: false isNullable: true - - dataType: STRING - name: geo__state__location isPrimaryKey: false - isNullable: true + name: customer_name - dataType: STRING - name: region - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: geo__state__location - dataType: STRING - name: state + isNullable: true isPrimaryKey: false + name: region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: state id: customers path: - demo @@ -727,55 +718,55 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: INT - name: customer_id + isNullable: true isPrimaryKey: false - referencedTableId: customers + name: customer_id referencedTableColumn: customer_id - isNullable: true + referencedTableId: customers - dataType: DATE - name: date - isPrimaryKey: false isNullable: true - - dataType: STRING - name: order_id isPrimaryKey: false + name: date + - dataType: STRING isNullable: true + isPrimaryKey: false + name: order_id - dataType: STRING - name: order_line_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: order_line_id - dataType: STRING - name: order_status - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: price isPrimaryKey: false + name: order_status + - dataType: NUMERIC isNullable: true + isPrimaryKey: false + name: price - dataType: INT - name: product_id + isNullable: true isPrimaryKey: false - referencedTableId: products + name: product_id referencedTableColumn: product_id - isNullable: true + referencedTableId: products - dataType: NUMERIC - name: quantity - isPrimaryKey: false isNullable: true - - dataType: STRING - name: wdf__region isPrimaryKey: false - isNullable: true + name: quantity - dataType: STRING - name: wdf__state + isNullable: true isPrimaryKey: false + name: wdf__region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: wdf__state id: order_lines path: - demo @@ -783,24 +774,26 @@ interactions: type: TABLE - columns: - dataType: STRING - name: category - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: category - dataType: INT - name: product_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: product_id - dataType: STRING - name: product_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: product_name id: products path: - demo - products type: TABLE - workspaceId: demo + separator: __ translationPrefix: tr + wdfPrefix: wdf + workspaceId: demo headers: Accept: - application/json @@ -812,40 +805,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -1212,3 +1174,35 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1075' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model_sql_datasets.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model_sql_datasets.yaml index 551fa0d3b..5a4df011b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model_sql_datasets.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_pdm_and_generate_logical_model_sql_datasets.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scan body: scanTables: true scanViews: false @@ -19,41 +16,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scan response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: pdm: @@ -205,17 +170,43 @@ interactions: - products type: TABLE warnings: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '413' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel body: - separator: __ - wdfPrefix: wdf pdm: sqls: - - statement: SELECT * FROM order_lines - title: Order lines duplicate sql dataset - columns: + - columns: - dataType: STRING name: order_line_id - dataType: STRING @@ -234,9 +225,9 @@ interactions: name: price - dataType: NUMERIC name: quantity - - statement: SELECT * FROM v_wdf_customers - title: Customers sql dataset with WDF - columns: + statement: SELECT * FROM order_lines + title: Order lines duplicate sql dataset + - columns: - dataType: INT name: customer_id - dataType: STRING @@ -247,34 +238,36 @@ interactions: name: region - dataType: STRING name: wdf__region + statement: SELECT * FROM v_wdf_customers + title: Customers sql dataset with WDF tables: - columns: - dataType: NUMERIC - name: budget - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: budget - dataType: STRING - name: campaign_channel_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_channel_id - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: STRING - name: category - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: spend isPrimaryKey: false + name: category + - dataType: NUMERIC isNullable: true - - dataType: STRING - name: type isPrimaryKey: false + name: spend + - dataType: STRING isNullable: true + isPrimaryKey: false + name: type id: campaign_channels path: - demo @@ -282,13 +275,13 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: campaign_id - dataType: STRING - name: campaign_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: campaign_name id: campaigns path: - demo @@ -296,25 +289,25 @@ interactions: type: TABLE - columns: - dataType: INT - name: customer_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: customer_id - dataType: STRING - name: customer_name - isPrimaryKey: false isNullable: true - - dataType: STRING - name: geo__state__location isPrimaryKey: false - isNullable: true + name: customer_name - dataType: STRING - name: region - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: geo__state__location - dataType: STRING - name: state + isNullable: true isPrimaryKey: false + name: region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: state id: customers path: - demo @@ -322,55 +315,55 @@ interactions: type: TABLE - columns: - dataType: INT - name: campaign_id + isNullable: true isPrimaryKey: false - referencedTableId: campaigns + name: campaign_id referencedTableColumn: campaign_id - isNullable: true + referencedTableId: campaigns - dataType: INT - name: customer_id + isNullable: true isPrimaryKey: false - referencedTableId: customers + name: customer_id referencedTableColumn: customer_id - isNullable: true + referencedTableId: customers - dataType: DATE - name: date - isPrimaryKey: false isNullable: true - - dataType: STRING - name: order_id isPrimaryKey: false + name: date + - dataType: STRING isNullable: true + isPrimaryKey: false + name: order_id - dataType: STRING - name: order_line_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: order_line_id - dataType: STRING - name: order_status - isPrimaryKey: false isNullable: true - - dataType: NUMERIC - name: price isPrimaryKey: false + name: order_status + - dataType: NUMERIC isNullable: true + isPrimaryKey: false + name: price - dataType: INT - name: product_id + isNullable: true isPrimaryKey: false - referencedTableId: products + name: product_id referencedTableColumn: product_id - isNullable: true + referencedTableId: products - dataType: NUMERIC - name: quantity - isPrimaryKey: false isNullable: true - - dataType: STRING - name: wdf__region isPrimaryKey: false - isNullable: true + name: quantity - dataType: STRING - name: wdf__state + isNullable: true isPrimaryKey: false + name: wdf__region + - dataType: STRING isNullable: true + isPrimaryKey: false + name: wdf__state id: order_lines path: - demo @@ -378,23 +371,25 @@ interactions: type: TABLE - columns: - dataType: STRING - name: category - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: category - dataType: INT - name: product_id - isPrimaryKey: true isNullable: false + isPrimaryKey: true + name: product_id - dataType: STRING - name: product_name - isPrimaryKey: false isNullable: true + isPrimaryKey: false + name: product_name id: products path: - demo - products type: TABLE + separator: __ translationPrefix: tr + wdfPrefix: wdf headers: Accept: - application/json @@ -406,40 +401,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/generateLogicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -933,3 +897,35 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1374' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_schemata.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_schemata.yaml index 7efe03113..563ead004 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_schemata.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_scan_schemata.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scanSchemata body: null headers: Accept: @@ -14,15 +11,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scanSchemata response: - status: - code: 200 - message: OK + body: + string: + schemaNames: + - demo headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '24' Content-Type: @@ -36,17 +34,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - schemaNames: - - demo + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml index 820f28204..9c571a9cf 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_store_declarative_data_sources.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '428' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: dataSources: @@ -66,33 +34,15 @@ interactions: type: POSTGRESQL url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer username: postgres - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '428' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -100,16 +50,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources + response: body: string: dataSources: @@ -130,55 +98,36 @@ interactions: type: POSTGRESQL url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer username: postgres - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '428' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -187,44 +136,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -235,61 +200,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -298,44 +245,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -346,9 +309,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml index c85c53ea1..6f4f009c5 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/dataSources body: null headers: Accept: @@ -14,15 +11,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/dataSources response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + id: demo-test-ds + name: demo-test-ds + permissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: USE + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '428' Content-Type: @@ -36,43 +50,25 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - alternativeDataSourceId: ds-put-abc-id - authenticationType: USERNAME_PASSWORD - id: demo-test-ds - name: demo-test-ds - permissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: USE - schema: demo - type: POSTGRESQL - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSource/test body: + schema: demo type: POSTGRESQL url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - schema: demo username: postgres headers: Accept: @@ -85,15 +81,20 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSource/test response: - status: - code: 200 - message: OK + body: + string: + error: 'DB request exception (state=GENERAL_ERROR dataSourceId=null vendorErrorState=08004 + vendorErrorCode=0) org.postgresql.util.PSQLException: The server requested + SCRAM-based authentication, but the password is an empty string.org.postgresql.util.PSQLException: + The server requested SCRAM-based authentication, but the password is an + empty string.' + successful: false headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '373' Content-Type: @@ -106,32 +107,26 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - error: 'DB request exception (state=GENERAL_ERROR dataSourceId=null vendorErrorState=08004 - vendorErrorCode=0) org.postgresql.util.PSQLException: The server requested - SCRAM-based authentication, but the password is an empty string.org.postgresql.util.PSQLException: - The server requested SCRAM-based authentication, but the password is an - empty string.' - successful: false + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSource/test body: + password: secret + schema: demo type: POSTGRESQL url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - schema: demo - password: secret username: postgres headers: Accept: @@ -144,17 +139,20 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSource/test response: - status: - code: 200 - message: OK + body: + string: + queryDurationMillis: + createCacheTable: 0 + simpleSelect: 5 + successful: true headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '82' + - '81' Content-Type: - application/json DATE: *id001 @@ -165,19 +163,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - queryDurationMillis: - createCacheTable: 0 - simpleSelect: 11 - successful: true + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model.yaml index 4726d87ed..d0255b17c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scan body: scanTables: true scanViews: false @@ -19,41 +16,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scan response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: pdm: @@ -205,9 +170,39 @@ interactions: - products type: TABLE warnings: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '413' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scan body: scanTables: false scanViews: true @@ -223,15 +218,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scan response: - status: - code: 200 - message: OK + body: + string: + pdm: + tables: [] + warnings: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '35' Content-Type: @@ -244,18 +241,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - pdm: - tables: [] - warnings: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_schemata.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_schemata.yaml index 3aeb56a2a..7b41f849f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_schemata.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_schemata.yaml @@ -1,15 +1,12 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scan body: scanTables: true scanViews: false - separator: __ schemata: - demo + separator: __ headers: Accept: - application/json @@ -21,41 +18,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scan response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: pdm: @@ -207,3 +172,36 @@ interactions: - products type: TABLE warnings: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '413' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_table_prefix.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_table_prefix.yaml index 1eaeeeffb..a649ec89c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_table_prefix.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_scan_model_with_table_prefix.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scan body: scanTables: true scanViews: false @@ -20,41 +17,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scan response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: pdm: @@ -114,3 +79,36 @@ interactions: - order_lines type: TABLE warnings: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '264' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml index ff3bf49d5..2294ebcd5 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/dremio body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/dremio response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 956d5e8c5fc54c668dca646492d25d90 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,35 +37,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: ab644bd972d1f53f8d9fe0298b29e067 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Dremio + password: demopass schema: '' type: DREMIO - username: demouser - password: demopass url: jdbc:dremio:direct=dremio:31010 + username: demouser id: dremio type: dataSource headers: @@ -78,15 +74,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Dremio + schema: '' + type: DREMIO + url: jdbc:dremio:direct=dremio:31010 + username: demouser + id: dremio + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/dremio headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '319' Content-Type: @@ -99,33 +106,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:dremio:direct=dremio:31010 - username: demouser - authenticationType: USERNAME_PASSWORD - name: Dremio - type: DREMIO - schema: '' - id: dremio - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/dremio + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/dremio body: null headers: Accept: @@ -136,15 +131,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/dremio response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Dremio + schema: '' + type: DREMIO + url: jdbc:dremio:direct=dremio:31010 + username: demouser + id: dremio + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/dremio headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '319' Content-Type: @@ -157,33 +163,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:dremio:direct=dremio:31010 - username: demouser - authenticationType: USERNAME_PASSWORD - name: Dremio - type: DREMIO - schema: '' - id: dremio - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/dremio + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/dremio body: null headers: Accept-Encoding: @@ -192,15 +186,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/dremio response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -211,15 +204,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml index 982af06c7..d440beb0f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds + type: dataSource + links: + next: http://localhost:3000/api/v1/entities/dataSources?page=1&size=500 + self: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '671' Content-Type: @@ -36,37 +48,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -77,15 +73,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: a2f4a53acf8507ead9dd72b931d24e58 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -98,35 +98,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 0f7a4b8de462416994c63b25ac304a4c + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test + password: demopass schema: demo type: POSTGRESQL - username: demouser - password: demopass url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser id: test type: dataSource headers: @@ -140,15 +135,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '356' Content-Type: @@ -161,33 +167,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -198,15 +192,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '356' Content-Type: @@ -219,33 +224,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -256,15 +249,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '356' Content-Type: @@ -277,38 +281,26 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PATCH - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: data: attributes: - name: Test2 alternativeDataSourceId: ds-patch-abc-id + name: Test2 type: POSTGRESQL url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer id: test @@ -324,15 +316,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PATCH + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + alternativeDataSourceId: ds-patch-abc-id + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '401' Content-Type: @@ -345,34 +349,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-patch-abc-id - name: Test2 - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -383,15 +374,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + alternativeDataSourceId: ds-patch-abc-id + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '401' Content-Type: @@ -404,34 +407,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-patch-abc-id - name: Test2 - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -440,15 +430,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -459,15 +448,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml index f4d9b3624..a6399d0cd 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 363644edf120b7628d301f132b123dd4 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,36 +37,31 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 91771d4e564ae5f17c86201e47fdda34 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: + alternativeDataSourceId: ds-abc-id name: Test2 + password: demopass schema: demo type: REDSHIFT - username: demouser - password: demopass url: jdbc:redshift://aws.endpoint:5439/demo?autosave=true - alternativeDataSourceId: ds-abc-id + username: demouser id: test type: dataSource headers: @@ -79,15 +75,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + alternativeDataSourceId: ds-abc-id + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: REDSHIFT + url: jdbc:redshift://aws.endpoint:5439/demo?autosave=true + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '379' Content-Type: @@ -100,34 +108,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:redshift://aws.endpoint:5439/demo?autosave=true - username: demouser - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-abc-id - name: Test2 - type: REDSHIFT - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -138,15 +133,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + alternativeDataSourceId: ds-abc-id + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: REDSHIFT + url: jdbc:redshift://aws.endpoint:5439/demo?autosave=true + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '379' Content-Type: @@ -159,34 +166,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:redshift://aws.endpoint:5439/demo?autosave=true - username: demouser - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-abc-id - name: Test2 - type: REDSHIFT - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -195,15 +189,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -214,15 +207,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_scan_sql_without_preview.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_scan_sql_without_preview.yaml index 0c912cbba..853a7c09e 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_scan_sql_without_preview.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_scan_sql_without_preview.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scanSql body: sql: SELECT ol.campaign_id FROM order_lines ol LIMIT 0 headers: @@ -17,15 +14,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scanSql response: - status: - code: 200 - message: OK + body: + string: + columns: + - dataType: INT + name: campaign_id headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '53' Content-Type: @@ -39,18 +38,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - columns: - - dataType: INT - name: campaign_id + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql.yaml index 94e9d391a..7e22175d8 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scanSql body: sql: SELECT * FROM products headers: @@ -17,38 +14,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scanSql response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '442' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: columns: @@ -89,3 +57,34 @@ interactions: - - '140' - Shorts - Clothing + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '442' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql_with_nulls_in_preview.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql_with_nulls_in_preview.yaml index e1835b1be..c3318460e 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql_with_nulls_in_preview.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/scan_sql_with_nulls_in_preview.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/dataSources/demo-test-ds/scanSql body: sql: SELECT ol.campaign_id FROM order_lines ol ORDER BY campaign_id NULLS FIRST LIMIT 5 @@ -18,15 +15,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/dataSources/demo-test-ds/scanSql response: - status: - code: 200 - message: OK + body: + string: + columns: + - dataType: INT + name: campaign_id + dataPreview: + - - null + - - null + - - null + - - null + - - null headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '104' Content-Type: @@ -40,24 +45,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - columns: - - dataType: INT - name: campaign_id - dataPreview: - - - null - - - null - - - null - - - null - - - null + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml index 8cce234bc..51e19ac48 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 2ccd18dfaa7039f8d2a78c584155e616 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,35 +37,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: a361270e77694e18b35d0389b9abd834 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test + password: demopass schema: demo type: SNOWFLAKE - username: demouser - password: demopass url: jdbc:snowflake://gooddata.snowflakecomputing.com:443?warehouse=TIGER&db=TIGER&useProxy=true + username: demouser id: test type: dataSource headers: @@ -78,15 +74,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: SNOWFLAKE + url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '413' Content-Type: @@ -99,33 +106,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: SNOWFLAKE - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -136,15 +131,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: SNOWFLAKE + url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '413' Content-Type: @@ -157,33 +163,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: SNOWFLAKE - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -192,15 +186,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -211,21 +204,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -236,15 +229,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: dabaeac943cfe605d78ba2a52dd68dba headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -257,36 +254,31 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 65d6abccf753b88d6c4286a4046a8fe1 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test - schema: demo - type: SNOWFLAKE - username: demouser privateKey: private_key privateKeyPassphrase: private_key_passphrase + schema: demo + type: SNOWFLAKE url: jdbc:snowflake://gooddata.snowflakecomputing.com:443?warehouse=TIGER&db=TIGER&useProxy=true + username: demouser id: test type: dataSource headers: @@ -300,15 +292,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: KEY_PAIR + name: Test + schema: demo + type: SNOWFLAKE + url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '404' Content-Type: @@ -321,33 +324,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER - username: demouser - authenticationType: KEY_PAIR - name: Test - type: SNOWFLAKE - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -358,15 +349,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: KEY_PAIR + name: Test + schema: demo + type: SNOWFLAKE + url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '404' Content-Type: @@ -379,33 +381,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:snowflake://gooddata.snowflakecomputing.com:443/?application=GoodData_GoodDataCN&db=TIGER&useProxy=true&warehouse=TIGER - username: demouser - authenticationType: KEY_PAIR - name: Test - type: SNOWFLAKE - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -414,15 +404,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -433,15 +422,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml index b3f2ce2bb..d15fd48b1 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds + type: dataSource + links: + next: http://localhost:3000/api/v1/entities/dataSources?page=1&size=500 + self: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '671' Content-Type: @@ -36,37 +48,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -77,15 +73,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 7660a8968ad613bc96d4fb831122d3af headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -98,35 +98,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 18aee01b26daf9bf9c24219d1c368dca + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test + password: demopass schema: demo type: POSTGRESQL - username: demouser - password: demopass url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser id: test type: dataSource headers: @@ -140,15 +135,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '356' Content-Type: @@ -161,33 +167,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -198,15 +192,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '356' Content-Type: @@ -219,33 +224,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -256,15 +249,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '356' Content-Type: @@ -277,42 +281,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=true&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: data: attributes: name: Test2 + password: demopass schema: demo type: POSTGRESQL - username: demouser - password: demopass url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer + username: demouser id: test type: dataSource headers: @@ -326,15 +318,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '358' Content-Type: @@ -347,33 +350,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test2 - type: POSTGRESQL - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 body: null headers: Accept: @@ -384,15 +375,41 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds + type: dataSource + - attributes: + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer + username: demouser + id: test + links: + self: http://localhost:3000/api/v1/entities/dataSources/test + type: dataSource + links: + next: http://localhost:3000/api/v1/entities/dataSources?page=1&size=500 + self: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '1021' Content-Type: @@ -405,48 +422,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds - type: dataSource - - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test2 - type: POSTGRESQL - schema: demo - id: test - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -455,15 +445,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -474,15 +463,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml index e437e6880..5ae5bb5bd 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 6b3ecc87cca7f1e609faa804a189007f headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,35 +37,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 3acaba1753cecd630ad17783e01a0512 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test2 + password: demopass schema: demo type: VERTICA - username: demouser - password: demopass url: jdbc:vertica://localhost:5433/demo?TLSmode=false + username: demouser id: test type: dataSource headers: @@ -78,15 +74,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: VERTICA + url: jdbc:vertica://localhost:5433/demo?TLSmode=false + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '336' Content-Type: @@ -99,33 +106,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:vertica://localhost:5433/demo?TLSmode=false - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test2 - type: VERTICA - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept: @@ -136,15 +131,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: VERTICA + url: jdbc:vertica://localhost:5433/demo?TLSmode=false + username: demouser + id: test + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '336' Content-Type: @@ -157,33 +163,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:vertica://localhost:5433/demo?TLSmode=false - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test2 - type: VERTICA - schema: demo - id: test - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/test body: null headers: Accept-Encoding: @@ -192,15 +186,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/test response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -211,15 +204,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_csp_directive.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_csp_directive.yaml index 0b1e5aae7..17f9ecbf2 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_csp_directive.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_csp_directive.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives body: data: attributes: @@ -22,15 +19,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/cspDirectives response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + sources: + - https://test.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '211' Content-Type: @@ -44,29 +48,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept: @@ -77,15 +73,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + sources: + - https://test.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '211' Content-Type: @@ -98,29 +101,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept-Encoding: @@ -129,15 +124,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -148,15 +142,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml index 0a9fa3c87..a1f790032 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 1c5079e9bdb3b80f60d2c786c5e29819 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,30 +37,23 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: dcab779ee8f5cf7e390b3d6406dc377e + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks body: data: - id: demoJwk - type: jwk attributes: content: alg: RS256 @@ -71,6 +65,8 @@ interactions: x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk headers: Accept: - application/json @@ -82,17 +78,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/jwks response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + alg: RS256 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw + use: sig + x5c: + - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a + x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk + links: + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '1829' + - '1396' Content-Type: - application/json DATE: *id001 @@ -103,58 +116,59 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk + response: body: string: data: attributes: content: - kty: RSA alg: RS256 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw use: sig x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 x5t: tGg2yZgC0sVyvaK49GenyQB7cuA id: demoJwk type: jwk links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1396' Content-Type: - application/json DATE: *id001 @@ -165,9 +179,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -176,29 +188,12 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - kty: RSA - alg: RS256 - use: sig - x5c: - - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 - x5t: tGg2yZgC0sVyvaK49GenyQB7cuA - id: demoJwk - type: jwk - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept-Encoding: @@ -207,15 +202,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -226,15 +220,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_organization_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_organization_setting.yaml index 4f04c335b..6a8db578c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_organization_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_organization_setting.yaml @@ -1,17 +1,14 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings body: data: - id: test_setting - type: organizationSetting attributes: - type: LOCALE content: value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting headers: Accept: - application/json @@ -23,15 +20,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/organizationSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '246' Content-Type: @@ -45,30 +50,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept: @@ -79,15 +75,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '246' Content-Type: @@ -100,30 +104,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept-Encoding: @@ -132,15 +127,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -151,15 +145,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml index d9adc581f..1976494ad 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives body: data: attributes: @@ -22,15 +19,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/cspDirectives response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + sources: + - https://test.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '211' Content-Type: @@ -44,29 +48,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept-Encoding: @@ -75,15 +71,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -94,21 +89,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept: @@ -119,15 +114,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 430b4a178c198c407aa25c2112df3c4a headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -140,26 +139,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 5306149cd0936a18d255ccc2329223b8 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept-Encoding: @@ -168,15 +162,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -187,15 +180,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml index c5c51971a..3fb7eabec 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: d758d920b5d099533370e83571bdbb96 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,30 +37,23 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: bdf42ba1da0c0b08d4d155b3eeab5b4b + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks body: data: - id: demoJwk - type: jwk attributes: content: alg: RS256 @@ -71,6 +65,8 @@ interactions: x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk headers: Accept: - application/json @@ -82,17 +78,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/jwks response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + alg: RS256 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw + use: sig + x5c: + - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a + x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk + links: + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '1829' + - '1396' Content-Type: - application/json DATE: *id001 @@ -103,37 +116,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - kty: RSA - alg: RS256 - use: sig - x5c: - - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 - x5t: tGg2yZgC0sVyvaK49GenyQB7cuA - id: demoJwk - type: jwk - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept-Encoding: @@ -142,15 +139,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -161,21 +157,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept: @@ -186,15 +182,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: b44cc4dc3da0fa741a7add4bab134a0e headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -207,26 +207,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 7e2c892cd373c1045935f4b343d73cc3 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept-Encoding: @@ -235,15 +230,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -254,15 +248,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml index 7243f1a74..defe8f546 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml @@ -1,17 +1,14 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings body: data: - id: test_setting - type: organizationSetting attributes: - type: LOCALE content: value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting headers: Accept: - application/json @@ -23,15 +20,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/organizationSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '246' Content-Type: @@ -45,30 +50,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept-Encoding: @@ -77,15 +73,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -96,21 +91,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept: @@ -121,15 +116,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 079a6d5123343486ff368ed273b38ae7 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -142,26 +141,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 9d3471cd2ea50e679c09db79cbbdd7ab + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept-Encoding: @@ -170,15 +164,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -189,15 +182,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/layout_notification_channels.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/layout_notification_channels.yaml index 4bd4482bf..7d585fee4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/layout_notification_channels.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/layout_notification_channels.yaml @@ -1,19 +1,16 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/notificationChannels body: notificationChannels: - - id: webhook - name: Webhook + - allowedRecipients: CREATOR customDashboardUrl: https://dashboard.site - allowedRecipients: CREATOR destination: + token: '123' type: WEBHOOK url: https://webhook.site - token: '123' + id: webhook + name: Webhook headers: Accept-Encoding: - br, gzip, deflate @@ -23,15 +20,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/notificationChannels response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -41,21 +37,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/notificationChannels body: null headers: Accept: @@ -66,15 +62,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/notificationChannels response: - status: - code: 200 - message: OK + body: + string: + notificationChannels: + - allowedRecipients: CREATOR + customDashboardUrl: https://dashboard.site + dashboardLinkVisibility: INTERNAL_ONLY + destination: + hasSecretKey: false + hasToken: true + type: WEBHOOK + url: https://webhook.site + destinationType: WEBHOOK + id: webhook + inPlatformNotification: DISABLED + name: Webhook headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '341' Content-Type: @@ -87,28 +95,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - notificationChannels: - - allowedRecipients: CREATOR - customDashboardUrl: https://dashboard.site - dashboardLinkVisibility: INTERNAL_ONLY - destination: - hasSecretKey: false - hasToken: true - type: WEBHOOK - url: https://webhook.site - destinationType: WEBHOOK - id: webhook - inPlatformNotification: DISABLED - name: Webhook + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_csp_directives.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_csp_directives.yaml index c6f551d26..3946461c8 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_csp_directives.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_csp_directives.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/cspDirectives?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: [] + links: + next: http://localhost:3000/api/v1/entities/cspDirectives?page=1&size=500 + self: http://localhost:3000/api/v1/entities/cspDirectives?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '249' Content-Type: @@ -36,25 +36,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: [] - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives body: data: attributes: @@ -73,15 +69,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/cspDirectives response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + sources: + - https://test.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '211' Content-Type: @@ -94,29 +97,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives body: data: attributes: @@ -135,15 +130,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/cspDirectives response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + sources: + - https://test2.com + id: script-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/script-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '216' Content-Type: @@ -156,29 +158,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test2.com - id: script-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/script-src + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives?page=0&size=500 body: null headers: Accept: @@ -189,15 +183,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/cspDirectives?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + sources: + - https://test.com + id: font-src + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src + type: cspDirective + - attributes: + sources: + - https://test2.com + id: script-src + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/script-src + type: cspDirective + links: + next: http://localhost:3000/api/v1/entities/cspDirectives?page=1&size=500 + self: http://localhost:3000/api/v1/entities/cspDirectives?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '659' Content-Type: @@ -210,39 +221,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - sources: - - https://test.com - id: font-src - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src - type: cspDirective - - attributes: - sources: - - https://test2.com - id: script-src - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/script-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept-Encoding: @@ -251,15 +244,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -270,21 +262,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/script-src body: null headers: Accept-Encoding: @@ -293,15 +285,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/cspDirectives/script-src response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -312,15 +303,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml index b636a1835..0993b6fc2 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: [] + links: + next: http://localhost:3000/api/v1/entities/jwks?page=1&size=500 + self: http://localhost:3000/api/v1/entities/jwks?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '231' Content-Type: @@ -36,25 +36,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: [] - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk1 body: null headers: Accept: @@ -65,15 +61,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk1 response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 9d2a3c683c70fbe2fbfde11bc8b2d430 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -86,30 +86,23 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 2ddbb363e991dc452c4c13852cef611d + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks body: data: - id: demoJwk1 - type: jwk attributes: content: alg: RS256 @@ -121,6 +114,8 @@ interactions: x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk1 + type: jwk headers: Accept: - application/json @@ -132,17 +127,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/jwks response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + alg: RS256 + e: AQAB + kid: kid1 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw + use: sig + x5c: + - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a + x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk1 + type: jwk + links: + self: http://localhost:3000/api/v1/entities/jwks/demoJwk1 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '1808' + - '1376' Content-Type: - application/json DATE: *id001 @@ -153,37 +165,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - kty: RSA - alg: RS256 - use: sig - x5c: - - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: kid1 - x5t: tGg2yZgC0sVyvaK49GenyQB7cuA - id: demoJwk1 - type: jwk - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk1 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk2 body: null headers: Accept: @@ -194,15 +190,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk2 response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 5ac8534c1327f0d43bfebf56c8d5876f headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -215,30 +215,23 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: b4b804b8c547855d1f7632a090590087 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks body: data: - id: demoJwk2 - type: jwk attributes: content: alg: RS256 @@ -250,6 +243,8 @@ interactions: x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk2 + type: jwk headers: Accept: - application/json @@ -261,79 +256,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/jwks response: - status: - code: 201 - message: Created - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '1808' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: content: - kty: RSA alg: RS256 + e: AQAB + kid: kid2 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw use: sig x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: kid2 x5t: tGg2yZgC0sVyvaK49GenyQB7cuA id: demoJwk2 type: jwk links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk2 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks?page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/jwks/demoJwk2 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1376' Content-Type: - application/json DATE: *id001 @@ -344,9 +294,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -355,47 +303,93 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks?page=0&size=500 + response: body: string: data: - attributes: content: - kty: RSA alg: RS256 + e: AQAB + kid: kid1 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw use: sig x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: kid1 x5t: tGg2yZgC0sVyvaK49GenyQB7cuA id: demoJwk1 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk1 + self: http://localhost:3000/api/v1/entities/jwks/demoJwk1 type: jwk - attributes: content: - kty: RSA alg: RS256 + e: AQAB + kid: kid2 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw use: sig x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: kid2 x5t: tGg2yZgC0sVyvaK49GenyQB7cuA id: demoJwk2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk2 + self: http://localhost:3000/api/v1/entities/jwks/demoJwk2 type: jwk links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks?page=1&size=500 + next: http://localhost:3000/api/v1/entities/jwks?page=1&size=500 + self: http://localhost:3000/api/v1/entities/jwks?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1429' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk1 body: null headers: Accept-Encoding: @@ -404,15 +398,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk1 response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -423,21 +416,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk2 body: null headers: Accept-Encoding: @@ -446,15 +439,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk2 response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -465,15 +457,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_organization_settings.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_organization_settings.yaml index bc91e6859..0bdc20b11 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_organization_settings.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_organization_settings.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organizationSettings?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: [] + links: + next: http://localhost:3000/api/v1/entities/organizationSettings?page=1&size=500 + self: http://localhost:3000/api/v1/entities/organizationSettings?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '263' Content-Type: @@ -36,33 +36,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: [] - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings body: data: - id: test_setting_1 - type: organizationSetting attributes: - type: LOCALE content: value: fr-FR + type: LOCALE + id: test_setting_1 + type: organizationSetting headers: Accept: - application/json @@ -74,15 +70,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/organizationSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting_1 + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting_1 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '250' Content-Type: @@ -95,38 +99,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting_1 - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting_1 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings body: data: - id: test_setting_2 - type: organizationSetting attributes: - type: FORMAT_LOCALE content: value: en-GB + type: FORMAT_LOCALE + id: test_setting_2 + type: organizationSetting headers: Accept: - application/json @@ -138,15 +133,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/organizationSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: en-GB + type: FORMAT_LOCALE + id: test_setting_2 + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting_2 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '257' Content-Type: @@ -159,30 +162,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: en-GB - type: FORMAT_LOCALE - id: test_setting_2 - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting_2 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings?page=0&size=500 body: null headers: Accept: @@ -193,15 +187,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organizationSettings?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting_1 + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting_1 + type: organizationSetting + - attributes: + content: + value: en-GB + type: FORMAT_LOCALE + id: test_setting_2 + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting_2 + type: organizationSetting + links: + next: http://localhost:3000/api/v1/entities/organizationSettings?page=1&size=500 + self: http://localhost:3000/api/v1/entities/organizationSettings?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '753' Content-Type: @@ -214,41 +227,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting_1 - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting_1 - type: organizationSetting - - attributes: - content: - value: en-GB - type: FORMAT_LOCALE - id: test_setting_2 - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting_2 - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting_1 body: null headers: Accept-Encoding: @@ -257,15 +250,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting_1 response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -276,21 +268,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting_2 body: null headers: Accept-Encoding: @@ -299,15 +291,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting_2 response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -318,15 +309,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml index 834bac0a2..08e257610 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/organization.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: http://localhost:3000/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -12,10 +9,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -33,7 +31,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -41,12 +42,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: http://localhost:3000/api/v1/entities/admin/organizations/default body: null headers: Accept-Encoding: @@ -55,15 +55,37 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '430' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -73,7 +95,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -81,24 +106,8 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: - data: - attributes: - name: Default Organization - hostname: localhost - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - id: default - type: organization - links: - self: http://localhost:3000/api/v1/entities/admin/organizations/default + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml index 013ea8587..7a33375f9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_allowed_origins.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -12,15 +9,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -30,27 +26,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -59,44 +55,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '564' - Content-Type: - - application/vnd.gooddata.api+json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -107,61 +74,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -170,44 +119,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -218,46 +183,20 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: PATCH - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - body: - data: - id: python-sdk-dex - type: organization - attributes: - allowedOrigins: - - https://test.com - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '554' + - '564' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -266,22 +205,46 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + data: + attributes: + allowedOrigins: + - https://test.com + id: default + type: organization + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: PATCH + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: - https://test.com earlyAccess: enableAlerting @@ -294,59 +257,42 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout - id: python-sdk-dex + hostname: localhost + name: Default Organization + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '554' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -355,45 +301,61 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '582' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: - https://test.com + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -404,61 +366,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '582' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -467,45 +411,61 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '582' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: - https://test.com + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -516,21 +476,49 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '582' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PATCH - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: data: - id: python-sdk-dex - type: organization attributes: allowedOrigins: [] + id: default + type: organization headers: Accept: - application/json @@ -542,15 +530,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PATCH + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '536' Content-Type: @@ -563,34 +569,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_csp_directive.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_csp_directive.yaml index ba6e2ccce..405104f85 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_csp_directive.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_csp_directive.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives body: data: attributes: @@ -22,15 +19,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/cspDirectives response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + sources: + - https://test.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '211' Content-Type: @@ -44,29 +48,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: data: attributes: @@ -85,15 +81,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + sources: + - https://test2.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '212' Content-Type: @@ -106,29 +109,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test2.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept: @@ -139,15 +134,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + sources: + - https://test2.com + id: font-src + type: cspDirective + links: + self: http://localhost:3000/api/v1/entities/cspDirectives/font-src headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '212' Content-Type: @@ -160,29 +162,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - sources: - - https://test2.com - id: font-src - type: cspDirective - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/cspDirectives/font-src body: null headers: Accept-Encoding: @@ -191,15 +185,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/cspDirectives/font-src response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -210,15 +203,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml index ebeff1f9f..8b78b83e5 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: e4f9cc719e2ec963fc4696f996966f3d headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,30 +37,23 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 8bf1662057b91a1cf06c5b349581efa7 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks body: data: - id: demoJwk - type: jwk attributes: content: alg: RS256 @@ -71,6 +65,8 @@ interactions: x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk headers: Accept: - application/json @@ -82,17 +78,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/jwks response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + alg: RS256 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw + use: sig + x5c: + - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a + x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk + links: + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '1829' + - '1396' Content-Type: - application/json DATE: *id001 @@ -103,58 +116,59 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk + response: body: string: data: attributes: content: - kty: RSA alg: RS256 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw use: sig x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 x5t: tGg2yZgC0sVyvaK49GenyQB7cuA id: demoJwk type: jwk links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1396' Content-Type: - application/json DATE: *id001 @@ -165,9 +179,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -176,33 +188,14 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - kty: RSA - alg: RS256 - use: sig - x5c: - - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 - x5t: tGg2yZgC0sVyvaK49GenyQB7cuA - id: demoJwk - type: jwk - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: data: - id: demoJwk - type: jwk attributes: content: alg: RS384 @@ -214,6 +207,8 @@ interactions: x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk headers: Accept: - application/json @@ -225,17 +220,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + content: + alg: RS384 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw + use: sig + x5c: + - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a + x5t: tGg2yZgC0sVyvaK49GenyQB7cuA + id: demoJwk + type: jwk + links: + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1397' Content-Type: - application/json DATE: *id001 @@ -246,9 +258,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -257,50 +267,50 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk + response: body: string: data: attributes: content: - kty: RSA alg: RS384 + e: AQAB + kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 + kty: RSA + n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw use: sig x5c: - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 x5t: tGg2yZgC0sVyvaK49GenyQB7cuA id: demoJwk type: jwk links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/jwks/demoJwk headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1397' Content-Type: - application/json DATE: *id001 @@ -311,9 +321,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -322,29 +330,12 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - kty: RSA - alg: RS384 - use: sig - x5c: - - MIIDbjCCAlagAwIBAgIUQ/BwWYGeDkDQjbUycWZqI/FeUDcwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xETAPBgNVBAoMCEdvb2REYXRhMRUwEwYDVQQDDAxnb29kZGF0YS5jb20wHhcNMjMwODE2MTM1NDMyWhcNMjMwOTE1MTM1NDMyWjBkMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzERMA8GA1UECgwIR29vZERhdGExFTATBgNVBAMMDGdvb2RkYXRhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALF4sOXTjpeg8ABSmED+tt4VDrO09H9piRLzDdT/gJFW8GoMWpyc8kaSSV9s8l7SGJ7E65bI60kcwU71gWQlxluF6ZnEiCqEZMv4QSRoCurISt9++aE4XAKtNSWVhFl1Nq6GMgUM+1cb1EiAD5kFV5/UwkO2E/00DoN/Q86Ldj2T2bWmyjNiEBLVer1ZnIqs90JDJ3Jbxp1AHGuimQjwaLXTV/XVnnQDgR5oqQs82CB7rZzF7E2bTwhL65YGMktcg+7tVmsT4JfOA+roJagwRelhdVa9n4Hnln8ro4if1NugQqug5hkAjewTwISSbKOm7z9uxufMGRkdxzP24ye9emcCAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBAQA2j3W4+qAkp0K6WP0gogMhqToJCx4/ojRdJ0hJeoIluIAiTzL3uDmG+85xbQ758qD6Ya1Mty6aPdNekFxYlUmulhYY+2Sdby6ChQIUgS9wj1sNFuo4e3U3JVpBfdtJq3diNTcEO/iNWds9MRtNzmrkRIDxAyZvB79Ghuq8i+J9OQ1Na0MEDqKD+KrW0eLT661sT0HgBJCyZaDFQHaiFs3GXEP2QMseMXZuuhLrg8im7DsO+skQtIWH02x6xxKgj/o5bRmoU4ArOzYRWehrrj+pEeAEIVStLzSnhl4v4ovrQ7P5YbeHLFvmw6rb0wp0HYmuZIvA+wJa0uazJjfzjv3a - n: sXiw5dOOl6DwAFKYQP623hUOs7T0f2mJEvMN1P-AkVbwagxanJzyRpJJX2zyXtIYnsTrlsjrSRzBTvWBZCXGW4XpmcSIKoRky_hBJGgK6shK3375oThcAq01JZWEWXU2roYyBQz7VxvUSIAPmQVXn9TCQ7YT_TQOg39Dzot2PZPZtabKM2IQEtV6vVmciqz3QkMnclvGnUAca6KZCPBotdNX9dWedAOBHmipCzzYIHutnMXsTZtPCEvrlgYyS1yD7u1WaxPgl84D6uglqDBF6WF1Vr2fgeeWfyujiJ_U26BCq6DmGQCN7BPAhJJso6bvP27G58wZGR3HM_bjJ716Zw - e: AQAB - kid: Gkncy6f9BSp7wdav8w4SNZE1yt0 - x5t: tGg2yZgC0sVyvaK49GenyQB7cuA - id: demoJwk - type: jwk - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/jwks/demoJwk body: null headers: Accept-Encoding: @@ -353,15 +344,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/jwks/demoJwk response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -372,15 +362,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml index a6aec949f..b3bcbbcd2 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_name.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: http://localhost:3000/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -12,10 +9,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -33,7 +31,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -41,12 +42,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: http://localhost:3000/api/v1/entities/admin/organizations/default body: null headers: Accept-Encoding: @@ -55,39 +55,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Content-Length: - - '430' - Content-Type: - - application/vnd.gooddata.api+json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-Xss-Protection: - - '0' body: string: data: attributes: - name: Default Organization - hostname: localhost + allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -98,42 +74,31 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' id: default type: organization links: self: http://localhost:3000/api/v1/entities/admin/organizations/default - - request: - method: GET - uri: http://localhost:3000/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -141,12 +106,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: http://localhost:3000/api/v1/entities/admin/organizations/default body: null headers: Accept-Encoding: @@ -155,25 +119,31 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '430' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -181,13 +151,28 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Default Organization - hostname: localhost + allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -198,41 +183,20 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' id: default type: organization links: self: http://localhost:3000/api/v1/entities/admin/organizations/default - - request: - method: PATCH - uri: http://localhost:3000/api/v1/entities/admin/organizations/default - body: - data: - id: default - type: organization - attributes: - name: test_organization - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '427' + - '564' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -240,7 +204,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -248,13 +215,36 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + data: + attributes: + name: test_organization + id: default + type: organization + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: PATCH + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: test_organization - hostname: localhost + allowedOrigins: [] earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -265,42 +255,30 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: test_organization id: default type: organization links: self: http://localhost:3000/api/v1/entities/admin/organizations/default - - request: - method: GET - uri: http://localhost:3000/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '0' + - '539' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -308,12 +286,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: http://localhost:3000/api/v1/entities/admin/organizations/default body: null headers: Accept-Encoding: @@ -322,25 +299,31 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '427' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -348,13 +331,28 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: test_organization - hostname: localhost + allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -365,42 +363,31 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: test_organization + region: '' id: default type: organization links: self: http://localhost:3000/api/v1/entities/admin/organizations/default - - request: - method: GET - uri: http://localhost:3000/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '0' + - '567' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -408,12 +395,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: http://localhost:3000/api/v1/entities/admin/organizations/default body: null headers: Accept-Encoding: @@ -422,25 +408,31 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '427' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -448,13 +440,28 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: test_organization - hostname: localhost + allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -465,41 +472,20 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: test_organization + region: '' id: default type: organization links: self: http://localhost:3000/api/v1/entities/admin/organizations/default - - request: - method: PATCH - uri: http://localhost:3000/api/v1/entities/admin/organizations/default - body: - data: - id: default - type: organization - attributes: - name: Default Organization - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '430' + - '567' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -507,7 +493,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -515,13 +504,36 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + data: + attributes: + name: Default Organization + id: default + type: organization + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: PATCH + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Default Organization - hostname: localhost + allowedOrigins: [] earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -532,7 +544,39 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization id: default type: organization links: self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '536' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_organization_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_organization_setting.yaml index b169ecd68..61345cac3 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_organization_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_organization_setting.yaml @@ -1,17 +1,14 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings body: data: - id: test_setting - type: organizationSetting attributes: - type: LOCALE content: value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting headers: Accept: - application/json @@ -23,15 +20,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/organizationSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '246' Content-Type: @@ -45,38 +50,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: data: - id: test_setting - type: organizationSetting attributes: - type: LOCALE content: value: en-GB + type: LOCALE + id: test_setting + type: organizationSetting headers: Accept: - application/json @@ -88,15 +84,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + content: + value: en-GB + type: LOCALE + id: test_setting + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '246' Content-Type: @@ -109,30 +113,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: en-GB - type: LOCALE - id: test_setting - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept: @@ -143,15 +138,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + content: + value: en-GB + type: LOCALE + id: test_setting + type: organizationSetting + links: + self: http://localhost:3000/api/v1/entities/organizationSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '246' Content-Type: @@ -164,30 +167,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: en-GB - type: LOCALE - id: test_setting - type: organizationSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organizationSettings/test_setting body: null headers: Accept-Encoding: @@ -196,15 +190,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/organizationSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -215,15 +208,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/get_declarative_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/get_declarative_permissions.yaml index e946846e6..0538d739c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/get_declarative_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/get_declarative_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/permissions body: null headers: Accept: @@ -14,15 +11,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/permissions response: - status: - code: 200 - message: OK + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '292' Content-Type: @@ -36,16 +50,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/permissions + response: body: string: hierarchyPermissions: @@ -66,28 +98,9 @@ interactions: id: demoGroup type: userGroup name: VIEW - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/permissions - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '292' Content-Type: @@ -100,33 +113,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_available_assignees.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_available_assignees.yaml index 5f654f756..4c53e36ea 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_available_assignees.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_available_assignees.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/availableAssignees body: null headers: Accept: @@ -14,15 +11,20 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/availableAssignees response: - status: - code: 200 - message: OK + body: + string: + userGroups: + - id: visitorsGroup + name: visitors + - id: demoGroup + name: demo group + users: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '107' Content-Type: @@ -36,21 +38,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userGroups: - - id: visitorsGroup - name: visitors - - id: demoGroup - name: demo group - users: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_dashboard_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_dashboard_permissions.yaml index d749193fe..3e34b7a40 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_dashboard_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/list_dashboard_permissions.yaml @@ -1,19 +1,16 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions body: - - permissions: - - VIEW - assigneeIdentifier: + - assigneeIdentifier: id: visitorsGroup type: userGroup - - permissions: + permissions: - VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + permissions: + - VIEW headers: Accept-Encoding: - br, gzip, deflate @@ -23,15 +20,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -41,21 +37,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions body: null headers: Accept: @@ -66,15 +62,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions response: - status: - code: 200 - message: OK + body: + string: + rules: + - permissions: + - level: VIEW + source: direct + type: allWorkspaceUsers + userGroups: + - id: visitorsGroup + name: visitors + permissions: + - level: VIEW + source: direct + users: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '209' Content-Type: @@ -87,41 +94,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - rules: - - permissions: - - level: VIEW - source: direct - type: allWorkspaceUsers - userGroups: - - id: visitorsGroup - name: visitors - permissions: - - level: VIEW - source: direct - users: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions body: - - permissions: [] - assigneeIdentifier: + - assigneeIdentifier: id: visitorsGroup type: userGroup - - permissions: [] - assigneeRule: + permissions: [] + - assigneeRule: type: allWorkspaceUsers + permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -131,15 +126,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -148,21 +142,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions body: null headers: Accept: @@ -173,15 +167,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions response: - status: - code: 200 - message: OK + body: + string: + rules: [] + userGroups: [] + users: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '39' Content-Type: @@ -194,18 +190,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - rules: [] - userGroups: [] - users: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_dashboard_permissions_declarative_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_dashboard_permissions_declarative_workspace.yaml index 19d3e7554..b9e708664 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_dashboard_permissions_declarative_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_dashboard_permissions_declarative_workspace.yaml @@ -1,19 +1,16 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions body: - - permissions: - - VIEW - assigneeIdentifier: + - assigneeIdentifier: id: visitorsGroup type: userGroup - - permissions: + permissions: - VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + permissions: + - VIEW headers: Accept-Encoding: - br, gzip, deflate @@ -23,15 +20,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -41,21 +37,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions body: null headers: Accept: @@ -66,37 +62,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '209' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: rules: @@ -111,30 +79,11 @@ interactions: - level: VIEW source: direct users: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '209' Content-Type: - application/json DATE: *id001 @@ -145,9 +94,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -156,8 +103,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo + response: body: string: analytics: @@ -169,46 +133,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' createdAt: 2025-08-07 11:45 createdBy: @@ -269,143 +233,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' createdAt: 2025-08-07 11:45 createdBy: @@ -442,19 +406,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -462,15 +426,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -708,6 +672,7 @@ interactions: type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1056,9 +1021,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2052,17 +2017,46 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions body: - - permissions: [] - assigneeIdentifier: + - assigneeIdentifier: id: visitorsGroup type: userGroup - - permissions: [] - assigneeRule: + permissions: [] + - assigneeRule: type: allWorkspaceUsers + permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -2072,15 +2066,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/managePermissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2089,21 +2082,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions body: null headers: Accept: @@ -2114,15 +2107,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/analyticalDashboards/campaign/permissions response: - status: - code: 200 - message: OK + body: + string: + rules: [] + userGroups: [] + users: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '39' Content-Type: @@ -2135,18 +2130,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - rules: [] - userGroups: [] - users: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_organization_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_organization_permissions.yaml index f55aa971c..48777b3a1 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_organization_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/manage_organization_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/organization/managePermissions body: - assigneeIdentifier: id: adminGroup @@ -20,15 +17,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/organization/managePermissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -38,21 +34,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: null headers: Accept: @@ -63,15 +59,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 200 - message: OK + body: + string: + - assignee: + id: adminGroup + type: userGroup + name: MANAGE + - assignee: + id: adminGroup + type: userGroup + name: SELF_CREATE_TOKEN headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '148' Content-Type: @@ -84,29 +87,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - - assignee: - id: adminGroup - type: userGroup - name: MANAGE - - assignee: - id: adminGroup - type: userGroup - name: SELF_CREATE_TOKEN + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: - assignee: id: adminGroup @@ -121,15 +116,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -138,21 +132,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: null headers: Accept: @@ -163,15 +157,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 200 - message: OK + body: + string: + - assignee: + id: adminGroup + type: userGroup + name: MANAGE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '69' Content-Type: @@ -184,19 +181,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - - assignee: - id: adminGroup - type: userGroup - name: MANAGE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_organization_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_organization_permissions.yaml index df91eba38..81be009d6 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_organization_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_organization_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: - assignee: id: adminGroup @@ -22,15 +19,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -40,21 +36,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: null headers: Accept: @@ -65,15 +61,22 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 200 - message: OK + body: + string: + - assignee: + id: adminGroup + type: userGroup + name: MANAGE + - assignee: + id: adminGroup + type: userGroup + name: SELF_CREATE_TOKEN headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '148' Content-Type: @@ -86,29 +89,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - - assignee: - id: adminGroup - type: userGroup - name: MANAGE - - assignee: - id: adminGroup - type: userGroup - name: SELF_CREATE_TOKEN + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: - assignee: id: adminGroup @@ -123,15 +118,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -140,21 +134,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/organization/permissions body: null headers: Accept: @@ -165,15 +159,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/organization/permissions response: - status: - code: 200 - message: OK + body: + string: + - assignee: + id: adminGroup + type: userGroup + name: MANAGE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '69' Content-Type: @@ -186,19 +183,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - - assignee: - id: adminGroup - type: userGroup - name: MANAGE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_permissions.yaml index a77e4c4be..1a32bfcef 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/permissions/put_declarative_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_west/permissions body: null headers: Accept: @@ -14,15 +11,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_west/permissions response: - status: - code: 200 - message: OK + body: + string: + hierarchyPermissions: [] + permissions: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '44' Content-Type: @@ -36,42 +34,40 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: [] - permissions: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_west/permissions body: - permissions: + hierarchyPermissions: - assignee: id: demo2 type: user - name: ANALYZE + name: MANAGE - assignee: id: demoGroup type: userGroup - name: VIEW - hierarchyPermissions: + name: ANALYZE + permissions: - assignee: id: demo2 type: user - name: MANAGE + name: ANALYZE - assignee: id: demoGroup type: userGroup - name: ANALYZE + name: VIEW headers: Accept-Encoding: - br, gzip, deflate @@ -81,15 +77,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_west/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -98,21 +93,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_west/permissions body: null headers: Accept: @@ -123,15 +118,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_west/permissions response: - status: - code: 200 - message: OK + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '292' Content-Type: @@ -144,42 +156,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_west/permissions body: - permissions: [] hierarchyPermissions: [] + permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -189,15 +183,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_west/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -206,21 +199,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_west/permissions body: null headers: Accept: @@ -231,15 +224,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_west/permissions response: - status: - code: 200 - message: OK + body: + string: + hierarchyPermissions: [] + permissions: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '44' Content-Type: @@ -252,17 +246,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: [] - permissions: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml index 59e746f21..acd39aa44 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 body: null headers: Accept: @@ -14,48 +11,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -66,7 +31,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -77,7 +42,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -88,20 +53,50 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/newUser?include=userGroups body: null headers: Accept: @@ -112,15 +107,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/newUser?include=userGroups response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: a98119963ea8fe08b6277d9e2cd78d6f headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -133,40 +132,35 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: f91aa2b3af3a7fddc9cb13e8089bc282 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users body: data: - id: newUser - type: user attributes: + authenticationId: newUser_auth_id + email: john.doe@email.com firstname: john lastname: doe - email: john.doe@email.com - authenticationId: newUser_auth_id + id: newUser relationships: userGroups: data: - id: demoGroup type: userGroup + type: user headers: Accept: - application/json @@ -178,15 +172,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/users response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationId: newUser_auth_id + email: john.doe@email.com + firstname: john + lastname: doe + id: newUser + type: user + links: + self: http://localhost:3000/api/v1/entities/users/newUser headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '264' Content-Type: @@ -199,31 +202,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: newUser_auth_id - firstname: john - lastname: doe - email: john.doe@email.com - id: newUser - type: user - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/newUser + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/newUser?include=userGroups body: null headers: Accept: @@ -234,45 +227,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/newUser?include=userGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '564' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: authenticationId: newUser_auth_id + email: john.doe@email.com firstname: john lastname: doe - email: john.doe@email.com id: newUser relationships: userGroups: @@ -285,34 +250,15 @@ interactions: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/newUser?include=userGroups - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/users/newUser?include=userGroups headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '564' Content-Type: - application/json DATE: *id001 @@ -323,9 +269,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -334,15 +278,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -353,7 +314,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -364,7 +325,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -373,12 +334,12 @@ interactions: type: user - attributes: authenticationId: newUser_auth_id + email: john.doe@email.com firstname: john lastname: doe - email: john.doe@email.com id: newUser links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/newUser + self: http://localhost:3000/api/v1/entities/users/newUser relationships: userGroups: data: @@ -389,20 +350,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '428' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/newUser body: null headers: Accept-Encoding: @@ -411,15 +401,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/users/newUser response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -430,15 +419,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml index 37a40fe1f..a383a4e3d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=0&size=500 body: null headers: Accept: @@ -14,53 +11,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: {} id: adminQA1Group links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminQA1Group + self: http://localhost:3000/api/v1/entities/userGroups/adminQA1Group relationships: parents: data: @@ -71,13 +36,13 @@ interactions: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup - attributes: name: visitors id: visitorsGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/visitorsGroup + self: http://localhost:3000/api/v1/entities/userGroups/visitorsGroup relationships: parents: data: @@ -88,20 +53,50 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '266' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/newUserGroup?include=ALL body: null headers: Accept: @@ -112,15 +107,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/newUserGroup?include=ALL response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 4bca0d1b5fd9cfba49309fc1626452a6 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -133,37 +132,32 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 8623549b02e6c3be579ddff29e413523 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups body: data: - id: newUserGroup - type: userGroup attributes: name: NEWUSERGROUP + id: newUserGroup relationships: parents: data: - id: demoGroup type: userGroup + type: userGroup headers: Accept: - application/json @@ -175,15 +169,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/userGroups response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: NEWUSERGROUP + id: newUserGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/newUserGroup headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '204' Content-Type: @@ -196,28 +196,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: NEWUSERGROUP - id: newUserGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/newUserGroup + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/newUserGroup?include=ALL body: null headers: Accept: @@ -228,37 +221,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/newUserGroup?include=ALL response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '494' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -276,34 +241,15 @@ interactions: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/newUserGroup?include=ALL - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/userGroups/newUserGroup?include=ALL headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '494' Content-Type: - application/json DATE: *id001 @@ -314,9 +260,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -325,20 +269,37 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: {} id: adminQA1Group links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminQA1Group + self: http://localhost:3000/api/v1/entities/userGroups/adminQA1Group relationships: parents: data: @@ -349,13 +310,13 @@ interactions: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup - attributes: name: NEWUSERGROUP id: newUserGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/newUserGroup + self: http://localhost:3000/api/v1/entities/userGroups/newUserGroup relationships: parents: data: @@ -366,7 +327,7 @@ interactions: name: visitors id: visitorsGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/visitorsGroup + self: http://localhost:3000/api/v1/entities/userGroups/visitorsGroup relationships: parents: data: @@ -377,20 +338,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '298' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/newUserGroup body: null headers: Accept-Encoding: @@ -399,15 +389,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/userGroups/newUserGroup response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -418,15 +407,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_user_groups.yaml index d6a4df3b6..c0ce31bf9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: null headers: Accept: @@ -14,15 +11,31 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 200 - message: OK + body: + string: + userGroups: + - id: adminGroup + permissions: [] + - id: adminQA1Group + parents: + - id: adminGroup + type: userGroup + permissions: [] + - id: demoGroup + name: demo group + permissions: [] + - id: visitorsGroup + name: visitors + parents: + - id: demoGroup + type: userGroup + permissions: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: @@ -36,16 +49,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups + response: body: string: userGroups: @@ -65,28 +96,9 @@ interactions: - id: demoGroup type: userGroup permissions: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: @@ -99,32 +111,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userGroups: - - id: adminGroup - permissions: [] - - id: adminQA1Group - parents: - - id: adminGroup - type: userGroup - permissions: [] - - id: demoGroup - name: demo group - permissions: [] - - id: visitorsGroup - name: visitors - parents: - - id: demoGroup - type: userGroup - permissions: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users.yaml index 089b0c4fe..663d49e39 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -14,15 +11,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK + body: + string: + users: + - id: admin + permissions: [] + settings: [] + userGroups: + - id: adminGroup + type: userGroup + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo + permissions: [] + settings: [] + userGroups: + - id: adminGroup + type: userGroup + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 + permissions: [] + settings: [] + userGroups: + - id: demoGroup + type: userGroup headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '453' Content-Type: @@ -36,16 +53,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users + response: body: string: users: @@ -69,28 +104,9 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '453' Content-Type: @@ -103,36 +119,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - users: - - id: admin - permissions: [] - settings: [] - userGroups: - - id: adminGroup - type: userGroup - - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs - id: demo - permissions: [] - settings: [] - userGroups: - - id: adminGroup - type: userGroup - - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs - id: demo2 - permissions: [] - settings: [] - userGroups: - - id: demoGroup - type: userGroup + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users_user_groups.yaml index 14f4170ea..3452c6add 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_declarative_users_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '760' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -86,33 +54,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '760' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -120,16 +70,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups + response: body: string: userGroups: @@ -170,3 +138,33 @@ interactions: userGroups: - id: demoGroup type: userGroup + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '760' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user.yaml index d9cc140a5..d54f2fb15 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups body: null headers: Accept: @@ -14,15 +11,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 + relationships: + userGroups: + data: + - id: demoGroup + type: userGroup + type: user + included: + - attributes: + name: demo group + id: demoGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '540' Content-Type: @@ -36,34 +51,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs - id: demo2 - relationships: - userGroups: - data: - - id: demoGroup - type: userGroup - type: user - included: - - attributes: - name: demo group - id: demoGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user_group.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user_group.yaml index 4a77218ab..f0cede995 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user_group.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/get_user_group.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL body: null headers: Accept: @@ -14,15 +11,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: demo group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '208' Content-Type: @@ -36,22 +39,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/list_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/list_user_groups.yaml index 25d928d17..0aafd660d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/list_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/list_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=0&size=500 body: null headers: Accept: @@ -14,53 +11,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: {} id: adminQA1Group links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminQA1Group + self: http://localhost:3000/api/v1/entities/userGroups/adminQA1Group relationships: parents: data: @@ -71,13 +36,13 @@ interactions: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup - attributes: name: visitors id: visitorsGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/visitorsGroup + self: http://localhost:3000/api/v1/entities/userGroups/visitorsGroup relationships: parents: data: @@ -88,14 +53,47 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/userGroups?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '266' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/list_users.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/list_users.yaml index 9f2b5f7a8..77c635d5e 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/list_users.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/list_users.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 body: null headers: Accept: @@ -14,48 +11,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -66,7 +31,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -77,7 +42,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -88,14 +53,47 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_user_groups.yaml index f7482dc87..a9196641c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: users: @@ -69,33 +37,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '308' + - '453' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -103,16 +53,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups + response: body: string: userGroups: @@ -132,30 +100,11 @@ interactions: - id: demoGroup type: userGroup permissions: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '308' Content-Type: - application/json DATE: *id001 @@ -166,9 +115,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -177,15 +124,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -196,7 +160,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -207,7 +171,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -218,20 +182,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -247,15 +240,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -264,21 +256,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -287,15 +279,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -304,27 +295,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -333,15 +324,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -354,42 +365,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -417,15 +407,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -434,21 +423,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: null headers: Accept: @@ -459,15 +448,31 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 200 - message: OK + body: + string: + userGroups: + - id: adminGroup + permissions: [] + - id: adminQA1Group + parents: + - id: adminGroup + type: userGroup + permissions: [] + - id: demoGroup + name: demo group + permissions: [] + - id: visitorsGroup + name: visitors + parents: + - id: demoGroup + type: userGroup + permissions: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: @@ -480,38 +485,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userGroups: - - id: adminGroup - permissions: [] - - id: adminQA1Group - parents: - - id: adminGroup - type: userGroup - permissions: [] - - id: demoGroup - name: demo group - permissions: [] - - id: visitorsGroup - name: visitors - parents: - - id: demoGroup - type: userGroup - permissions: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -539,15 +527,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -556,43 +543,43 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -602,15 +589,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -619,15 +605,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users.yaml index b4a9d4f16..fe3ef8f9f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: users: @@ -69,33 +37,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '453' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -103,9 +53,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -114,15 +62,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -133,7 +98,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -144,7 +109,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -155,66 +120,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '0' + - '376' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -223,44 +171,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -271,37 +235,65 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRkZWE3MTU5Yi1kNTMwLTQ4NGYtYjgxNy0yNGEwYjBhYWRkNzYSBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRkZWE3MTU5Yi1kNTMwLTQ4NGYtYjgxNy0yNGEwYjBhYWRkNzYSBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRmYmNhNDkwOS04YzYxLTRmMTYtODI3NC1iNzI0Njk1Y2FmNTESBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiRmYmNhNDkwOS04YzYxLTRmMTYtODI3NC1iNzI0Njk1Y2FmNTESBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -311,15 +303,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -328,21 +319,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -353,37 +344,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: users: @@ -407,31 +370,58 @@ interactions: userGroups: - id: demoGroup type: userGroup + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '453' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -441,15 +431,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -458,15 +447,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users_user_groups.yaml index cccc05fee..67d9e9215 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/load_and_put_declarative_users_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '760' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -86,33 +54,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '760' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -120,9 +70,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -131,15 +79,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -150,7 +115,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -161,7 +126,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -172,20 +137,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -201,15 +195,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -218,21 +211,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -241,15 +234,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -258,27 +250,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -287,15 +279,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -308,42 +320,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: userGroups: - id: adminGroup @@ -364,25 +355,25 @@ interactions: permissions: [] users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRkZWE3MTU5Yi1kNTMwLTQ4NGYtYjgxNy0yNGEwYjBhYWRkNzYSBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRkZWE3MTU5Yi1kNTMwLTQ4NGYtYjgxNy0yNGEwYjBhYWRkNzYSBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRmYmNhNDkwOS04YzYxLTRmMTYtODI3NC1iNzI0Njk1Y2FmNTESBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiRmYmNhNDkwOS04YzYxLTRmMTYtODI3NC1iNzI0Njk1Y2FmNTESBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -392,15 +383,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -409,21 +399,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: null headers: Accept: @@ -434,37 +424,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '760' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -505,9 +467,36 @@ interactions: userGroups: - id: demoGroup type: userGroup + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '760' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: userGroups: - id: adminGroup @@ -528,25 +517,25 @@ interactions: permissions: [] users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -556,15 +545,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -573,15 +561,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_user_groups.yaml index f0c824a53..54c7f4e9c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '308' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -65,33 +33,15 @@ interactions: - id: demoGroup type: userGroup permissions: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '453' + - '308' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -99,16 +49,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users + response: body: string: users: @@ -132,30 +100,11 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '453' Content-Type: - application/json DATE: *id001 @@ -166,9 +115,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -177,15 +124,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -196,7 +160,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -207,7 +171,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -218,20 +182,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -247,15 +240,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -264,21 +256,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -306,15 +298,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -323,21 +314,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: null headers: Accept: @@ -348,15 +339,31 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 200 - message: OK + body: + string: + userGroups: + - id: adminGroup + permissions: [] + - id: adminQA1Group + parents: + - id: adminGroup + type: userGroup + permissions: [] + - id: demoGroup + name: demo group + permissions: [] + - id: visitorsGroup + name: visitors + parents: + - id: demoGroup + type: userGroup + permissions: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: @@ -369,38 +376,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userGroups: - - id: adminGroup - permissions: [] - - id: adminQA1Group - parents: - - id: adminGroup - type: userGroup - permissions: [] - - id: demoGroup - name: demo group - permissions: [] - - id: visitorsGroup - name: visitors - parents: - - id: demoGroup - type: userGroup - permissions: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -428,15 +418,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -445,43 +434,43 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -491,15 +480,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -508,15 +496,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users.yaml index 442138278..ce759d24d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: users: @@ -69,33 +37,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '453' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -103,9 +53,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -114,15 +62,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -133,7 +98,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -144,7 +109,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -155,42 +120,71 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -200,15 +194,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -217,21 +210,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -242,37 +235,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: users: @@ -296,31 +261,58 @@ interactions: userGroups: - id: demoGroup type: userGroup + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '453' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -330,15 +322,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -347,15 +338,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users_user_groups.yaml index 3f5f5c9fe..7f0b78093 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/put_declarative_users_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '760' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -86,33 +54,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '760' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -120,9 +70,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -131,15 +79,32 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + response: body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -150,7 +115,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -161,7 +126,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -172,20 +137,49 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: userGroups: - id: adminGroup @@ -201,15 +195,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -218,21 +211,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: userGroups: - id: adminGroup @@ -253,25 +246,25 @@ interactions: permissions: [] users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -281,15 +274,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -298,21 +290,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: null headers: Accept: @@ -323,37 +315,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '760' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -394,9 +358,36 @@ interactions: userGroups: - id: demoGroup type: userGroup + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '760' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: userGroups: - id: adminGroup @@ -417,25 +408,25 @@ interactions: permissions: [] users: - id: admin + permissions: [] + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + id: demo permissions: [] - - id: demo - authId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs + settings: [] userGroups: - id: adminGroup type: userGroup - settings: [] + - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 permissions: [] - - id: demo2 - authId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + settings: [] userGroups: - id: demoGroup type: userGroup - settings: [] - permissions: [] headers: Accept-Encoding: - br, gzip, deflate @@ -445,15 +436,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -462,15 +452,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_user_groups.yaml index a85a2fe2c..0dd0d9f9b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '308' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -65,33 +33,15 @@ interactions: - id: demoGroup type: userGroup permissions: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/userGroups - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -99,16 +49,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/userGroups + response: body: string: userGroups: @@ -128,55 +96,36 @@ interactions: - id: demoGroup type: userGroup permissions: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '308' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -185,44 +134,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -233,61 +198,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -296,44 +243,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -344,9 +307,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users.yaml index d2fcc3f11..e382ba034 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '453' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: users: @@ -69,33 +37,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/users - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '453' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -103,16 +53,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/users + response: body: string: users: @@ -136,55 +104,36 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '453' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -193,44 +142,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -241,61 +206,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -304,44 +251,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -352,9 +315,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users_user_groups.yaml index 675699390..6a0ddad6d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/store_declarative_users_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '760' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: userGroups: @@ -86,33 +54,15 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/usersAndUserGroups - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '760' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -120,16 +70,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/usersAndUserGroups + response: body: string: userGroups: @@ -170,55 +138,36 @@ interactions: userGroups: - id: demoGroup type: userGroup - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '760' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -227,44 +176,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -275,61 +240,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -338,44 +285,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -386,9 +349,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml index 9de6e5ae7..1dd72540a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo/apiTokens?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: [] + links: + next: http://localhost:3000/api/v1/entities/users/demo/apiTokens?page=1&size=500 + self: http://localhost:3000/api/v1/entities/users/demo/apiTokens?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '263' Content-Type: @@ -36,25 +36,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: [] - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens body: data: id: test_token @@ -70,15 +66,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/users/demo/apiTokens response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + bearerToken: ZGVtbzp0ZXN0X3Rva2VuOjRyaHFLM0tidFE3RjVaNExueXNUNUhqTWIzVXRoeFAz + id: test_token + type: apiToken + links: + self: http://localhost:3000/api/v1/entities/users/demo/apiTokens/test_token headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '268' Content-Type: @@ -91,28 +93,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - bearerToken: ZGVtbzp0ZXN0X3Rva2VuOlVvenRGaHVTNUZSQ2g3SHJHa21ZNTNmaGRkUkVuWmFv - id: test_token - type: apiToken - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens/test_token + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens/test_token body: null headers: Accept: @@ -123,15 +118,20 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo/apiTokens/test_token response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: {} + id: test_token + type: apiToken + links: + self: http://localhost:3000/api/v1/entities/users/demo/apiTokens/test_token headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '188' Content-Type: @@ -144,27 +144,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: {} - id: test_token - type: apiToken - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens/test_token + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens?page=0&size=500 body: null headers: Accept: @@ -175,15 +169,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo/apiTokens?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: {} + id: test_token + links: + self: http://localhost:3000/api/v1/entities/users/demo/apiTokens/test_token + type: apiToken + links: + next: http://localhost:3000/api/v1/entities/users/demo/apiTokens?page=1&size=500 + self: http://localhost:3000/api/v1/entities/users/demo/apiTokens?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '442' Content-Type: @@ -196,30 +198,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: {} - id: test_token - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens/test_token - type: apiToken - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo/apiTokens/test_token body: null headers: Accept-Encoding: @@ -228,15 +221,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/users/demo/apiTokens/test_token response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -247,15 +239,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_assign_permissions_bulk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_assign_permissions_bulk.yaml index 941628b5b..2e0d349f8 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_assign_permissions_bulk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_assign_permissions_bulk.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -14,15 +11,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE + workspaces: + - hierarchyPermissions: + - MANAGE + id: demo + name: Demo + permissions: + - ANALYZE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '189' Content-Type: @@ -36,33 +44,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - MANAGE - workspaces: - - hierarchyPermissions: - - MANAGE - id: demo - name: Demo - permissions: - - ANALYZE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: null headers: Accept: @@ -73,15 +69,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - USE + workspaces: + - hierarchyPermissions: + - ANALYZE + id: demo + name: Demo + permissions: + - VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '184' Content-Type: @@ -94,51 +101,39 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - USE - workspaces: - - hierarchyPermissions: - - ANALYZE - id: demo - name: Demo - permissions: - - VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/assignPermissions body: assignees: - id: demo2 type: user - id: demoGroup type: userGroup + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE workspaces: - hierarchyPermissions: - ANALYZE id: demo - permissions: - - VIEW name: Demo - dataSources: - - id: demo-test-ds permissions: - - MANAGE - name: demo-test-ds + - VIEW headers: Accept-Encoding: - br, gzip, deflate @@ -148,15 +143,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/assignPermissions response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -167,21 +161,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -192,15 +186,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE + workspaces: + - hierarchyPermissions: + - ANALYZE + id: demo + name: Demo + permissions: + - VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '187' Content-Type: @@ -213,16 +218,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions + response: body: string: dataSources: @@ -237,28 +260,9 @@ interactions: name: Demo permissions: - VIEW - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '187' Content-Type: @@ -271,46 +275,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - MANAGE - workspaces: - - hierarchyPermissions: - - ANALYZE - id: demo - name: Demo - permissions: - - VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - MANAGE - name: demo-test-ds workspaces: - hierarchyPermissions: - MANAGE id: demo + name: Demo permissions: - ANALYZE - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -320,15 +312,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -337,34 +328,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - USE - name: demo-test-ds workspaces: - hierarchyPermissions: - ANALYZE id: demo + name: Demo permissions: - VIEW - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -374,15 +365,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -391,15 +381,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_group_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_group_permissions.yaml index a6361823f..a9fcbb4e0 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_group_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_group_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: null headers: Accept: @@ -14,15 +11,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - USE + workspaces: + - hierarchyPermissions: + - ANALYZE + id: demo + name: Demo + permissions: + - VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '184' Content-Type: @@ -36,27 +44,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - USE - workspaces: - - hierarchyPermissions: - - ANALYZE - id: demo - name: Demo - permissions: - - VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_permissions.yaml index 916463b2d..3e72f23f3 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_get_user_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -14,15 +11,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE + workspaces: + - hierarchyPermissions: + - MANAGE + id: demo + name: Demo + permissions: + - ANALYZE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '189' Content-Type: @@ -36,27 +44,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - MANAGE - workspaces: - - hierarchyPermissions: - - MANAGE - id: demo - name: Demo - permissions: - - ANALYZE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_group_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_group_permissions.yaml index 2b389daee..302b5842b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_group_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_group_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: null headers: Accept: @@ -14,15 +11,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - USE + workspaces: + - hierarchyPermissions: + - ANALYZE + id: demo + name: Demo + permissions: + - VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '184' Content-Type: @@ -36,46 +44,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - USE - workspaces: - - hierarchyPermissions: - - ANALYZE - id: demo - name: Demo - permissions: - - VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - MANAGE - name: demo-test-ds workspaces: - hierarchyPermissions: - ANALYZE id: demo + name: Demo permissions: - VIEW - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -85,15 +81,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -102,21 +97,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: null headers: Accept: @@ -127,15 +122,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE + workspaces: + - hierarchyPermissions: + - ANALYZE + id: demo + name: Demo + permissions: + - VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '187' Content-Type: @@ -148,46 +154,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - MANAGE - workspaces: - - hierarchyPermissions: - - ANALYZE - id: demo - name: Demo - permissions: - - VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/userGroups/demoGroup/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - USE - name: demo-test-ds workspaces: - hierarchyPermissions: - ANALYZE id: demo + name: Demo permissions: - VIEW - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -197,15 +191,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/userGroups/demoGroup/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -214,15 +207,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_permissions.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_permissions.yaml index ba3a51362..3837ab7d4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_permissions.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_manage_user_permissions.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -14,15 +11,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE + workspaces: + - hierarchyPermissions: + - MANAGE + id: demo + name: Demo + permissions: + - ANALYZE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '189' Content-Type: @@ -36,46 +44,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - MANAGE - workspaces: - - hierarchyPermissions: - - MANAGE - id: demo - name: Demo - permissions: - - ANALYZE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - USE - name: demo-test-ds workspaces: - hierarchyPermissions: - MANAGE id: demo + name: Demo permissions: - MANAGE - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -85,15 +81,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -102,21 +97,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -127,15 +122,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - USE + workspaces: + - hierarchyPermissions: + - MANAGE + id: demo + name: Demo + permissions: + - MANAGE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '185' Content-Type: @@ -148,46 +154,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - USE - workspaces: - - hierarchyPermissions: - - MANAGE - id: demo - name: Demo - permissions: - - MANAGE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - MANAGE - name: demo-test-ds workspaces: - hierarchyPermissions: - MANAGE id: demo + name: Demo permissions: - ANALYZE - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -197,15 +191,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -214,15 +207,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_revoke_permissions_bulk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_revoke_permissions_bulk.yaml index 15acb42f6..1f6e4159c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_revoke_permissions_bulk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_revoke_permissions_bulk.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -14,15 +11,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE + workspaces: + - hierarchyPermissions: + - MANAGE + id: demo + name: Demo + permissions: + - ANALYZE headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '189' Content-Type: @@ -36,49 +44,37 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: - - id: demo-test-ds - name: demo-test-ds - permissions: - - MANAGE - workspaces: - - hierarchyPermissions: - - MANAGE - id: demo - name: Demo - permissions: - - ANALYZE + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/revokePermissions body: assignees: - id: demo2 type: user + dataSources: + - id: demo-test-ds + name: demo-test-ds + permissions: + - MANAGE workspaces: - hierarchyPermissions: - MANAGE id: demo - permissions: - - ANALYZE name: Demo - dataSources: - - id: demo-test-ds permissions: - - MANAGE - name: demo-test-ds + - ANALYZE headers: Accept-Encoding: - br, gzip, deflate @@ -88,15 +84,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/revokePermissions response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -107,21 +102,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: null headers: Accept: @@ -132,15 +127,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 200 - message: OK + body: + string: + dataSources: [] + workspaces: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '34' Content-Type: @@ -153,36 +149,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - dataSources: [] - workspaces: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/userManagement/users/demo2/permissions body: dataSources: - id: demo-test-ds + name: demo-test-ds permissions: - MANAGE - name: demo-test-ds workspaces: - hierarchyPermissions: - MANAGE id: demo + name: Demo permissions: - ANALYZE - name: Demo headers: Accept-Encoding: - br, gzip, deflate @@ -192,15 +186,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/userManagement/users/demo2/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -209,15 +202,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_group.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_group.yaml index d9cc140a5..d54f2fb15 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_group.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_group.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups body: null headers: Accept: @@ -14,15 +11,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 + relationships: + userGroups: + data: + - id: demoGroup + type: userGroup + type: user + included: + - attributes: + name: demo group + id: demoGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '540' Content-Type: @@ -36,34 +51,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs - id: demo2 - relationships: - userGroups: - data: - - id: demoGroup - type: userGroup - type: user - included: - - attributes: - name: demo group - id: demoGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_groups.yaml index d9cc140a5..d54f2fb15 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_add_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups body: null headers: Accept: @@ -14,15 +11,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 + relationships: + userGroups: + data: + - id: demoGroup + type: userGroup + type: user + included: + - attributes: + name: demo group + id: demoGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '540' Content-Type: @@ -36,34 +51,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs - id: demo2 - relationships: - userGroups: - data: - - id: demoGroup - type: userGroup - type: user - included: - - attributes: - name: demo group - id: demoGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_remove_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_remove_user_groups.yaml index d9cc140a5..d54f2fb15 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_remove_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_remove_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups body: null headers: Accept: @@ -14,15 +11,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 + relationships: + userGroups: + data: + - id: demoGroup + type: userGroup + type: user + included: + - attributes: + name: demo group + id: demoGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '540' Content-Type: @@ -36,34 +51,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs - id: demo2 - relationships: - userGroups: - data: - - id: demoGroup - type: userGroup - type: user - included: - - attributes: - name: demo group - id: demoGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_replace_user_groups.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_replace_user_groups.yaml index d9cc140a5..d54f2fb15 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_replace_user_groups.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_user_replace_user_groups.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups body: null headers: Accept: @@ -14,15 +11,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs + id: demo2 + relationships: + userGroups: + data: + - id: demoGroup + type: userGroup + type: user + included: + - attributes: + name: demo group + id: demoGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/users/demo2?include=userGroups headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '540' Content-Type: @@ -36,34 +51,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs - id: demo2 - relationships: - userGroups: - data: - - id: demoGroup - type: userGroup - type: user - included: - - attributes: - name: demo group - id: demoGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2?include=userGroups + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml index f039a5027..f3bc32bed 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 body: null headers: Accept: @@ -14,48 +11,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -66,7 +31,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -77,7 +42,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -88,20 +53,50 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '376' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp?include=userGroups body: null headers: Accept: @@ -112,15 +107,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/test_update_user_temp?include=userGroups response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: cfb1e89cf201bc91d9fe467f7352a646 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -133,40 +132,35 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 516174f51a7a39257c37d7f8ae3e2b50 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users body: data: - id: test_update_user_temp - type: user attributes: + authenticationId: test_update_user_temp_auth + email: temp.user@example.com firstname: Temp lastname: User - email: temp.user@example.com - authenticationId: test_update_user_temp_auth + id: test_update_user_temp relationships: userGroups: data: - id: demoGroup type: userGroup + type: user headers: Accept: - application/json @@ -178,15 +172,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/users response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationId: test_update_user_temp_auth + email: temp.user@example.com + firstname: Temp + lastname: User + id: test_update_user_temp + type: user + links: + self: http://localhost:3000/api/v1/entities/users/test_update_user_temp headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '307' Content-Type: @@ -199,31 +202,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: test_update_user_temp_auth - firstname: Temp - lastname: User - email: temp.user@example.com - id: test_update_user_temp - type: user - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 body: null headers: Accept: @@ -234,47 +227,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/admin + self: http://localhost:3000/api/v1/entities/users/admin relationships: userGroups: data: @@ -285,7 +247,7 @@ interactions: authenticationId: CiRhMzA4NmU3MS0zYjY2LTQ3NTItODIxMC0wN2VmODQ5NDNkOGESBWxvY2Fs id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo + self: http://localhost:3000/api/v1/entities/users/demo relationships: userGroups: data: @@ -296,7 +258,7 @@ interactions: authenticationId: CiQ5ZGMzNjU0MC1hYzMxLTQ2MTUtOThmNy1hYzJiZDE2NzZkYzUSBWxvY2Fs id: demo2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/demo2 + self: http://localhost:3000/api/v1/entities/users/demo2 relationships: userGroups: data: @@ -305,12 +267,12 @@ interactions: type: user - attributes: authenticationId: test_update_user_temp_auth + email: temp.user@example.com firstname: Temp lastname: User - email: temp.user@example.com id: test_update_user_temp links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp + self: http://localhost:3000/api/v1/entities/users/test_update_user_temp relationships: userGroups: data: @@ -321,41 +283,24 @@ interactions: - attributes: {} id: adminGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/adminGroup + self: http://localhost:3000/api/v1/entities/userGroups/adminGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users?include=userGroups&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp?include=userGroups - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/users?include=userGroups&page=1&size=500 + self: http://localhost:3000/api/v1/entities/users?include=userGroups&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '607' + - '436' Content-Type: - application/json DATE: *id001 @@ -366,24 +311,42 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/test_update_user_temp?include=userGroups + response: body: string: data: attributes: authenticationId: test_update_user_temp_auth + email: temp.user@example.com firstname: Temp lastname: User - email: temp.user@example.com id: test_update_user_temp relationships: userGroups: @@ -396,22 +359,48 @@ interactions: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp?include=userGroups + self: http://localhost:3000/api/v1/entities/users/test_update_user_temp?include=userGroups + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '607' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp body: data: - id: test_update_user_temp - type: user attributes: + authenticationId: test_update_user_temp_123 + email: m.scott@dundermifflin.us firstname: Michael lastname: Scott - email: m.scott@dundermifflin.us - authenticationId: test_update_user_temp_123 + id: test_update_user_temp relationships: userGroups: data: @@ -419,6 +408,7 @@ interactions: type: userGroup - id: visitorsGroup type: userGroup + type: user headers: Accept: - application/json @@ -430,15 +420,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/users/test_update_user_temp response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + authenticationId: test_update_user_temp_123 + email: m.scott@dundermifflin.us + firstname: Michael + lastname: Scott + id: test_update_user_temp + type: user + links: + self: http://localhost:3000/api/v1/entities/users/test_update_user_temp headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '313' Content-Type: @@ -451,31 +450,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - authenticationId: test_update_user_temp_123 - firstname: Michael - lastname: Scott - email: m.scott@dundermifflin.us - id: test_update_user_temp - type: user - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp?include=userGroups body: null headers: Accept: @@ -486,45 +475,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/users/test_update_user_temp?include=userGroups response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '849' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: authenticationId: test_update_user_temp_123 + email: m.scott@dundermifflin.us firstname: Michael lastname: Scott - email: m.scott@dundermifflin.us id: test_update_user_temp relationships: userGroups: @@ -539,19 +500,46 @@ interactions: name: visitors id: visitorsGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/visitorsGroup + self: http://localhost:3000/api/v1/entities/userGroups/visitorsGroup type: userGroup - attributes: name: demo group id: demoGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup type: userGroup links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp?include=userGroups + self: http://localhost:3000/api/v1/entities/users/test_update_user_temp?include=userGroups + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '849' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/users/test_update_user_temp body: null headers: Accept-Encoding: @@ -560,15 +548,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/users/test_update_user_temp response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -579,15 +566,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.yaml index 0678de02d..d14171cdc 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user_group.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL body: null headers: Accept: @@ -14,15 +11,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: demo group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '208' Content-Type: @@ -36,28 +39,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL body: null headers: Accept: @@ -68,15 +64,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: demo group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '208' Content-Type: @@ -89,37 +91,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup body: data: - id: demoGroup - type: userGroup attributes: name: test_update_user_group + id: demoGroup relationships: parents: data: [] + type: userGroup headers: Accept: - application/json @@ -131,15 +126,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: test_update_user_group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '208' Content-Type: @@ -152,28 +153,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: test_update_user_group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL body: null headers: Accept: @@ -184,15 +178,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: test_update_user_group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '220' Content-Type: @@ -205,28 +205,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: test_update_user_group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL body: null headers: Accept: @@ -237,15 +230,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: test_update_user_group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup?include=ALL headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '220' Content-Type: @@ -258,34 +257,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: test_update_user_group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup?include=ALL + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup body: data: - id: demoGroup - type: userGroup attributes: name: demo group + id: demoGroup + type: userGroup headers: Accept: - application/json @@ -297,15 +289,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/userGroups/demoGroup response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: demo group + id: demoGroup + type: userGroup + links: + self: http://localhost:3000/api/v1/entities/userGroups/demoGroup headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '196' Content-Type: @@ -318,22 +316,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo group - id: demoGroup - type: userGroup - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/userGroups/demoGroup + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml index c811db63f..847ac3c09 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,48 +25,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -144,7 +109,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -156,145 +121,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -306,7 +271,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -316,7 +281,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -329,19 +294,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -349,15 +314,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -367,7 +332,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -376,7 +341,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -386,7 +351,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -396,7 +361,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -406,7 +371,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -415,7 +380,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -424,7 +389,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -434,7 +399,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -444,7 +409,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -454,7 +419,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -464,7 +429,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -474,7 +439,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -484,7 +449,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -494,7 +459,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -505,7 +470,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -515,7 +480,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -525,7 +490,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -535,7 +500,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -544,7 +509,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -553,7 +518,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -562,7 +527,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -571,7 +536,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -580,7 +545,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -589,12 +554,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -654,7 +620,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -702,9 +668,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -730,7 +696,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -809,7 +775,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -868,7 +834,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -925,7 +891,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -943,9 +909,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -978,7 +944,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1053,7 +1019,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1110,7 +1076,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1209,7 +1175,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1265,7 +1231,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1304,7 +1270,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1360,7 +1326,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1428,7 +1394,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1485,7 +1451,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1542,39 +1508,21 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user id: top_10_products title: Top 10 Products - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -1582,7 +1530,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Vary: @@ -1593,8 +1541,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel + response: body: string: analytics: @@ -1606,48 +1571,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1690,7 +1655,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1702,145 +1667,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1852,7 +1817,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1862,7 +1827,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1875,19 +1840,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -1895,15 +1860,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -1913,7 +1878,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1922,7 +1887,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1932,7 +1897,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1942,7 +1907,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1952,7 +1917,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1961,7 +1926,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1970,7 +1935,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1980,7 +1945,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -1990,7 +1955,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2000,7 +1965,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2010,7 +1975,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2020,7 +1985,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2030,7 +1995,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2040,7 +2005,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2051,7 +2016,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2061,7 +2026,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2071,7 +2036,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2081,7 +2046,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2090,7 +2055,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2099,7 +2064,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2108,7 +2073,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2117,7 +2082,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2126,7 +2091,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2135,12 +2100,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2200,7 +2166,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2248,9 +2214,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2276,7 +2242,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2355,7 +2321,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2414,7 +2380,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2471,7 +2437,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2489,9 +2455,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2524,7 +2490,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2599,7 +2565,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2656,7 +2622,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2755,7 +2721,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2811,7 +2777,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2850,7 +2816,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2906,7 +2872,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -2974,7 +2940,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -3031,7 +2997,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user @@ -3088,9 +3054,41 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 createdBy: id: admin type: user id: top_10_products title: Top 10 Products + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml index 3b23034fe..b542ecda8 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 body: null headers: Accept: @@ -14,55 +11,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: Campaign channel id - description: Campaign channel id - tags: - - Campaign channels areRelationsValid: true + description: Campaign channel id + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id meta: origin: originId: demo @@ -78,16 +44,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Campaign channels areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category meta: origin: originId: demo @@ -103,16 +70,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign id - description: Campaign id - tags: - - Campaigns areRelationsValid: true + description: Campaign id + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id meta: origin: originId: demo @@ -128,16 +96,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign name - description: Campaign name - tags: - - Campaigns areRelationsValid: true + description: Campaign name + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name meta: origin: originId: demo @@ -153,16 +122,17 @@ interactions: type: label type: attribute - attributes: - title: Customer id - description: Customer id - tags: - - Customers areRelationsValid: true + description: Customer id + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id meta: origin: originId: demo @@ -178,16 +148,17 @@ interactions: type: label type: attribute - attributes: - title: Customer name - description: Customer name - tags: - - Customers areRelationsValid: true + description: Customer name + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name meta: origin: originId: demo @@ -203,15 +174,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Date + areRelationsValid: true description: Date + granularity: DAY tags: - Date - granularity: DAY - areRelationsValid: true + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day meta: origin: originId: demo @@ -227,15 +198,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Month/Year + areRelationsValid: true description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH - areRelationsValid: true + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month meta: origin: originId: demo @@ -251,15 +222,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Quarter/Year + areRelationsValid: true description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER - areRelationsValid: true + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter meta: origin: originId: demo @@ -275,15 +246,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Week/Year + areRelationsValid: true description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK - areRelationsValid: true + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week meta: origin: originId: demo @@ -299,15 +270,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Year + areRelationsValid: true description: Year + granularity: YEAR tags: - Date - granularity: YEAR - areRelationsValid: true + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year meta: origin: originId: demo @@ -323,16 +294,17 @@ interactions: type: label type: attribute - attributes: - title: Order id - description: Order id - tags: - - Order lines areRelationsValid: true + description: Order id + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id meta: origin: originId: demo @@ -348,16 +320,17 @@ interactions: type: label type: attribute - attributes: - title: Order line id - description: Order line id - tags: - - Order lines areRelationsValid: true + description: Order line id + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id meta: origin: originId: demo @@ -373,16 +346,17 @@ interactions: type: label type: attribute - attributes: - title: Order status - description: Order status - tags: - - Order lines areRelationsValid: true + description: Order status + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status meta: origin: originId: demo @@ -398,16 +372,17 @@ interactions: type: label type: attribute - attributes: - title: Product id - description: Product id - tags: - - Products areRelationsValid: true + description: Product id + isNullable: false sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id meta: origin: originId: demo @@ -423,16 +398,17 @@ interactions: type: label type: attribute - attributes: - title: Product name - description: Product name - tags: - - Products areRelationsValid: true + description: Product name + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name meta: origin: originId: demo @@ -448,16 +424,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Products areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category meta: origin: originId: demo @@ -473,16 +450,17 @@ interactions: type: label type: attribute - attributes: - title: Region - description: Region - tags: - - Customers areRelationsValid: true + description: Region + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region meta: origin: originId: demo @@ -498,47 +476,49 @@ interactions: type: label type: attribute - attributes: - title: State - description: State - tags: - - Customers areRelationsValid: true + description: State + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state meta: origin: originId: demo originType: NATIVE relationships: - defaultView: - data: - id: state - type: label dataset: data: id: customers type: dataset + defaultView: + data: + id: state + type: label labels: data: - - id: state - type: label - id: geo__state__location type: label + - id: state + type: label type: attribute - attributes: - title: Type - description: Type - tags: - - Campaign channels areRelationsValid: true + description: Type + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type meta: origin: originId: demo @@ -555,139 +535,143 @@ interactions: type: attribute included: - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true primary: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name valueType: TEXT id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_name type: label - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status valueType: TEXT id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_status type: label - attributes: - title: Order lines + dataSourceTableId: demo-test-ds:order_lines + dataSourceTablePath: + - demo + - order_lines description: Order lines - tags: - - Order lines grain: - id: order_line_id type: attribute referenceProperties: - identifier: - id: date + id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: date - dataType: DATE - target: - id: date - type: date - isNullable: null + - column: campaign_id + dataType: INT + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null + target: + id: campaign_id + type: attribute - identifier: - id: products + id: customers type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: product_id + - column: customer_id dataType: INT + isNullable: true + nullValue: null target: - id: product_id + id: customer_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: campaigns + id: products type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: campaign_id + - column: product_id dataType: INT + isNullable: true + nullValue: null target: - id: campaign_id + id: product_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: customers + id: date type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: customer_id - dataType: INT - target: - id: customer_id - type: attribute - isNullable: null + - column: date + dataType: DATE + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:order_lines - dataSourceTablePath: - - demo - - order_lines + target: + id: date + type: date + tags: + - Order lines + title: Order lines + type: NORMAL workspaceDataFilterColumns: - - name: wdf__region - dataType: STRING - - name: wdf__state - dataType: STRING + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__state + filterColumnDataType: STRING + filterId: id: wdf__state type: workspaceDataFilter - filterColumn: wdf__state + - filterColumn: wdf__region filterColumnDataType: STRING - - filterId: + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region - filterColumnDataType: STRING - type: NORMAL id: order_lines links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/order_lines + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/order_lines type: dataset - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true primary: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name valueType: TEXT id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_name type: label - attributes: - title: Campaign channels + dataSourceTableId: demo-test-ds:campaign_channels + dataSourceTablePath: + - demo + - campaign_channels description: Campaign channels - tags: - - Campaign channels grain: - id: campaign_channel_id type: attribute @@ -696,340 +680,336 @@ interactions: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:campaign_channels - dataSourceTablePath: - - demo - - campaign_channels + tags: + - Campaign channels + title: Campaign channels type: NORMAL id: campaign_channels links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels type: dataset - attributes: - title: Date - Month/Year description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month type: label - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.quarter type: label - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false primary: true sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id valueType: TEXT id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channel_id type: label - attributes: - title: Date - Date description: Date - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.day type: label - attributes: - title: Campaigns - description: Campaigns - tags: - - Campaigns - grain: - - id: campaign_id - type: attribute dataSourceTableId: demo-test-ds:campaigns dataSourceTablePath: - demo - campaigns + description: Campaigns + grain: + - id: campaign_id + type: attribute + tags: + - Campaigns + title: Campaigns type: NORMAL id: campaigns links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaigns + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaigns type: dataset - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id valueType: TEXT id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_id type: label - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true primary: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name valueType: TEXT id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_name type: label - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type valueType: TEXT id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/type type: label - attributes: - title: Customers - description: Customers - tags: - - Customers - grain: - - id: customer_id - type: attribute dataSourceTableId: demo-test-ds:customers dataSourceTablePath: - demo - customers + description: Customers + grain: + - id: customer_id + type: attribute + tags: + - Customers + title: Customers type: NORMAL id: customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/customers type: dataset - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true primary: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region valueType: TEXT id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/region type: label - attributes: - title: Category description: Category - tags: - - Products + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category valueType: TEXT id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/products.category type: label - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.week type: label - attributes: - title: Location description: Location - tags: - - Customers + isNullable: true primary: false sourceColumn: geo__state__location sourceColumnDataType: STRING + tags: + - Customers + title: Location valueType: GEO id: geo__state__location links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/geo__state__location + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/geo__state__location type: label - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false primary: true sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id valueType: TEXT id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_id type: label - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false primary: true sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id valueType: TEXT id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_line_id type: label - attributes: - title: Products - description: Products - tags: - - Products - grain: - - id: product_id - type: attribute dataSourceTableId: demo-test-ds:products dataSourceTablePath: - demo - products + description: Products + grain: + - id: product_id + type: attribute + tags: + - Products + title: Products type: NORMAL id: products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/products + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/products type: dataset - attributes: - title: Date description: '' tags: - Date + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date type: dataset - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category valueType: TEXT id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channels.category type: label - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false primary: true sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id valueType: TEXT id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_id type: label - attributes: - title: Date - Year description: Year - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.year type: label - attributes: - title: State description: State - tags: - - Customers + isNullable: true primary: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State valueType: TEXT id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/state type: label - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false primary: true sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id valueType: TEXT id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_id type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1881' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -1037,9 +1017,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1048,16 +1026,35 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 + response: body: string: data: - attributes: - title: Campaign channels + areRelationsValid: true + dataSourceTableId: demo-test-ds:campaign_channels + dataSourceTablePath: + - demo + - campaign_channels description: Campaign channels - tags: - - Campaign channels grain: - id: campaign_channel_id type: attribute @@ -1066,25 +1063,23 @@ interactions: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:campaign_channels - dataSourceTablePath: - - demo - - campaign_channels - areRelationsValid: true + tags: + - Campaign channels + title: Campaign channels type: NORMAL id: campaign_channels links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels meta: origin: originId: demo @@ -1106,35 +1101,35 @@ interactions: type: fact type: dataset - attributes: - title: Campaign channels per category + areRelationsValid: true description: Campaign channels per categories - tags: - - Campaign channels per category + precedence: 1 referenceProperties: - identifier: id: campaign_channels type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_channel_id dataType: STRING + isNullable: true + nullValue: null target: id: campaign_channel_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null sql: + dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category - dataSourceId: demo-test-ds - precedence: 1 - areRelationsValid: true + tags: + - Campaign channels per category + title: Campaign channels per category type: NORMAL id: campaign_channels_per_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels_per_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels_per_category meta: origin: originId: demo @@ -1146,22 +1141,22 @@ interactions: type: aggregatedFact type: dataset - attributes: - title: Campaigns - description: Campaigns - tags: - - Campaigns - grain: - - id: campaign_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:campaigns dataSourceTablePath: - demo - campaigns - areRelationsValid: true + description: Campaigns + grain: + - id: campaign_id + type: attribute + tags: + - Campaigns + title: Campaigns type: NORMAL id: campaigns links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaigns + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaigns meta: origin: originId: demo @@ -1175,22 +1170,22 @@ interactions: type: attribute type: dataset - attributes: - title: Customers - description: Customers - tags: - - Customers - grain: - - id: customer_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:customers dataSourceTablePath: - demo - customers - areRelationsValid: true + description: Customers + grain: + - id: customer_id + type: attribute + tags: + - Customers + title: Customers type: NORMAL id: customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/customers meta: origin: originId: demo @@ -1208,15 +1203,15 @@ interactions: type: attribute type: dataset - attributes: - title: Date + areRelationsValid: true description: '' tags: - Date - areRelationsValid: true + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date meta: origin: originId: demo @@ -1236,95 +1231,95 @@ interactions: type: attribute type: dataset - attributes: - title: Order lines + areRelationsValid: true + dataSourceTableId: demo-test-ds:order_lines + dataSourceTablePath: + - demo + - order_lines description: Order lines - tags: - - Order lines grain: - id: order_line_id type: attribute referenceProperties: - identifier: - id: date + id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: date - dataType: DATE - target: - id: date - type: date - isNullable: null + - column: campaign_id + dataType: INT + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null + target: + id: campaign_id + type: attribute - identifier: - id: products + id: customers type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: product_id + - column: customer_id dataType: INT + isNullable: true + nullValue: null target: - id: product_id + id: customer_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: campaigns + id: products type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: campaign_id + - column: product_id dataType: INT + isNullable: true + nullValue: null target: - id: campaign_id + id: product_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: customers + id: date type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: customer_id - dataType: INT - target: - id: customer_id - type: attribute - isNullable: null + - column: date + dataType: DATE + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:order_lines - dataSourceTablePath: - - demo - - order_lines - areRelationsValid: true + target: + id: date + type: date + tags: + - Order lines + title: Order lines + type: NORMAL workspaceDataFilterColumns: - - name: wdf__region - dataType: STRING - - name: wdf__state - dataType: STRING + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__state + filterColumnDataType: STRING + filterId: id: wdf__state type: workspaceDataFilter - filterColumn: wdf__state + - filterColumn: wdf__region filterColumnDataType: STRING - - filterId: + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region - filterColumnDataType: STRING - type: NORMAL id: order_lines links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/order_lines + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/order_lines meta: origin: originId: demo @@ -1346,22 +1341,22 @@ interactions: type: fact type: dataset - attributes: - title: Products - description: Products - tags: - - Products - grain: - - id: product_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:products dataSourceTablePath: - demo - products - areRelationsValid: true + description: Products + grain: + - id: product_id + type: attribute + tags: + - Products + title: Products type: NORMAL id: products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/products + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/products meta: origin: originId: demo @@ -1378,302 +1373,304 @@ interactions: type: dataset included: - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id type: attribute - attributes: - title: Budget description: Budget - tags: - - Campaign channels + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget id: budget links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/budget + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/budget type: fact - attributes: - title: Date - Year description: Year + granularity: YEAR tags: - Date - granularity: YEAR + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year type: attribute - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name type: attribute - attributes: - title: Date - Month/Year description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month type: attribute - attributes: - title: Category description: Category - tags: - - Products + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category type: attribute - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter type: attribute - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category type: attribute - attributes: - title: State description: State - tags: - - Customers + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state type: attribute - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week type: attribute - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id type: attribute - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name type: attribute - attributes: - title: Price description: Price - tags: - - Order lines + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price id: price links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/price + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/price type: fact - attributes: description: Budget Agg - tags: - - Campaign channels per category + operation: SUM sourceColumn: budget sourceColumnDataType: INT - operation: SUM + tags: + - Campaign channels per category id: budget_agg links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg + self: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg type: aggregatedFact - attributes: - title: Date - Date description: Date + granularity: DAY tags: - Date - granularity: DAY + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day type: attribute - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region type: attribute - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id type: attribute - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id type: attribute - attributes: - title: Quantity description: Quantity - tags: - - Order lines + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity id: quantity links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/quantity + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/quantity type: fact - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id type: attribute - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type type: attribute - attributes: - title: Spend description: Spend - tags: - - Campaign channels + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend id: spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/spend type: fact - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status type: attribute - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name type: attribute - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id type: attribute links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1759' Content-Type: - application/json DATE: *id001 @@ -1684,9 +1681,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1695,386 +1690,435 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + response: body: string: data: - attributes: - title: '# of Active Customers' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Orders' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Orders' id: amount_of_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Top Customers' areRelationsValid: true content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Top Customers' id: amount_of_top_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Valid Orders' - description: '' areRelationsValid: true content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + description: '' + title: '# of Valid Orders' id: amount_of_valid_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Campaign Spend areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Campaign Spend id: campaign_spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/campaign_spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/campaign_spend meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Order Amount areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Order Amount id: order_amount links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/order_amount + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/order_amount meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue' id: percent_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue in Category' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue in Category' id: percent_revenue_in_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue per Product' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue per Product' id: percent_revenue_per_product links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue - description: '' areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + description: '' + title: Revenue id: revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Clothing) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Clothing) id: revenue-clothing links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-clothing + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-clothing meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Electronic) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Electronic) id: revenue-electronic links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-electronic + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-electronic meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Home) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Home) id: revenue-home links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-home + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-home meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Outdoor) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Outdoor) id: revenue-outdoor links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-outdoor + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-outdoor meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Customer areRelationsValid: true content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Dollar Spent areRelationsValid: true content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10 areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue / Top 10 id: revenue_top_10 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10 meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10% areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue / Top 10% id: revenue_top_10_percent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Total Revenue id: total_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue (No Filters) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Total Revenue (No Filters) id: total_revenue-no_filters links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters meta: origin: originId: demo originType: NATIVE type: metric links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1089' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml index 36c7076d9..64769cca9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 body: null headers: Accept: @@ -14,55 +11,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: Campaign channel id - description: Campaign channel id - tags: - - Campaign channels areRelationsValid: true + description: Campaign channel id + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id meta: origin: originId: demo @@ -78,16 +44,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Campaign channels areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category meta: origin: originId: demo @@ -103,16 +70,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign id - description: Campaign id - tags: - - Campaigns areRelationsValid: true + description: Campaign id + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id meta: origin: originId: demo @@ -128,16 +96,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign name - description: Campaign name - tags: - - Campaigns areRelationsValid: true + description: Campaign name + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name meta: origin: originId: demo @@ -153,16 +122,17 @@ interactions: type: label type: attribute - attributes: - title: Customer id - description: Customer id - tags: - - Customers areRelationsValid: true + description: Customer id + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id meta: origin: originId: demo @@ -178,16 +148,17 @@ interactions: type: label type: attribute - attributes: - title: Customer name - description: Customer name - tags: - - Customers areRelationsValid: true + description: Customer name + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name meta: origin: originId: demo @@ -203,15 +174,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Date + areRelationsValid: true description: Date + granularity: DAY tags: - Date - granularity: DAY - areRelationsValid: true + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day meta: origin: originId: demo @@ -227,15 +198,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Month/Year + areRelationsValid: true description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH - areRelationsValid: true + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month meta: origin: originId: demo @@ -251,15 +222,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Quarter/Year + areRelationsValid: true description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER - areRelationsValid: true + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter meta: origin: originId: demo @@ -275,15 +246,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Week/Year + areRelationsValid: true description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK - areRelationsValid: true + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week meta: origin: originId: demo @@ -299,15 +270,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Year + areRelationsValid: true description: Year + granularity: YEAR tags: - Date - granularity: YEAR - areRelationsValid: true + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year meta: origin: originId: demo @@ -323,16 +294,17 @@ interactions: type: label type: attribute - attributes: - title: Order id - description: Order id - tags: - - Order lines areRelationsValid: true + description: Order id + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id meta: origin: originId: demo @@ -348,16 +320,17 @@ interactions: type: label type: attribute - attributes: - title: Order line id - description: Order line id - tags: - - Order lines areRelationsValid: true + description: Order line id + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id meta: origin: originId: demo @@ -373,16 +346,17 @@ interactions: type: label type: attribute - attributes: - title: Order status - description: Order status - tags: - - Order lines areRelationsValid: true + description: Order status + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status meta: origin: originId: demo @@ -398,16 +372,17 @@ interactions: type: label type: attribute - attributes: - title: Product id - description: Product id - tags: - - Products areRelationsValid: true + description: Product id + isNullable: false sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id meta: origin: originId: demo @@ -423,16 +398,17 @@ interactions: type: label type: attribute - attributes: - title: Product name - description: Product name - tags: - - Products areRelationsValid: true + description: Product name + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name meta: origin: originId: demo @@ -448,16 +424,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Products areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category meta: origin: originId: demo @@ -473,16 +450,17 @@ interactions: type: label type: attribute - attributes: - title: Region - description: Region - tags: - - Customers areRelationsValid: true + description: Region + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region meta: origin: originId: demo @@ -498,47 +476,49 @@ interactions: type: label type: attribute - attributes: - title: State - description: State - tags: - - Customers areRelationsValid: true + description: State + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state meta: origin: originId: demo originType: NATIVE relationships: - defaultView: - data: - id: state - type: label dataset: data: id: customers type: dataset + defaultView: + data: + id: state + type: label labels: data: - - id: state - type: label - id: geo__state__location type: label + - id: state + type: label type: attribute - attributes: - title: Type - description: Type - tags: - - Campaign channels areRelationsValid: true + description: Type + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type meta: origin: originId: demo @@ -555,139 +535,143 @@ interactions: type: attribute included: - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true primary: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name valueType: TEXT id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_name type: label - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status valueType: TEXT id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_status type: label - attributes: - title: Order lines + dataSourceTableId: demo-test-ds:order_lines + dataSourceTablePath: + - demo + - order_lines description: Order lines - tags: - - Order lines grain: - id: order_line_id type: attribute referenceProperties: - identifier: - id: date + id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: date - dataType: DATE - target: - id: date - type: date - isNullable: null + - column: campaign_id + dataType: INT + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null + target: + id: campaign_id + type: attribute - identifier: - id: products + id: customers type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: product_id + - column: customer_id dataType: INT + isNullable: true + nullValue: null target: - id: product_id + id: customer_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: campaigns + id: products type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: campaign_id + - column: product_id dataType: INT + isNullable: true + nullValue: null target: - id: campaign_id + id: product_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: customers + id: date type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: customer_id - dataType: INT - target: - id: customer_id - type: attribute - isNullable: null + - column: date + dataType: DATE + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:order_lines - dataSourceTablePath: - - demo - - order_lines + target: + id: date + type: date + tags: + - Order lines + title: Order lines + type: NORMAL workspaceDataFilterColumns: - - name: wdf__region - dataType: STRING - - name: wdf__state - dataType: STRING + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__state + filterColumnDataType: STRING + filterId: id: wdf__state type: workspaceDataFilter - filterColumn: wdf__state + - filterColumn: wdf__region filterColumnDataType: STRING - - filterId: + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region - filterColumnDataType: STRING - type: NORMAL id: order_lines links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/order_lines + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/order_lines type: dataset - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true primary: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name valueType: TEXT id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_name type: label - attributes: - title: Campaign channels + dataSourceTableId: demo-test-ds:campaign_channels + dataSourceTablePath: + - demo + - campaign_channels description: Campaign channels - tags: - - Campaign channels grain: - id: campaign_channel_id type: attribute @@ -696,340 +680,336 @@ interactions: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:campaign_channels - dataSourceTablePath: - - demo - - campaign_channels + tags: + - Campaign channels + title: Campaign channels type: NORMAL id: campaign_channels links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels type: dataset - attributes: - title: Date - Month/Year description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month type: label - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.quarter type: label - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false primary: true sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id valueType: TEXT id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channel_id type: label - attributes: - title: Date - Date description: Date - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.day type: label - attributes: - title: Campaigns - description: Campaigns - tags: - - Campaigns - grain: - - id: campaign_id - type: attribute dataSourceTableId: demo-test-ds:campaigns dataSourceTablePath: - demo - campaigns + description: Campaigns + grain: + - id: campaign_id + type: attribute + tags: + - Campaigns + title: Campaigns type: NORMAL id: campaigns links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaigns + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaigns type: dataset - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id valueType: TEXT id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_id type: label - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true primary: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name valueType: TEXT id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_name type: label - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type valueType: TEXT id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/type type: label - attributes: - title: Customers - description: Customers - tags: - - Customers - grain: - - id: customer_id - type: attribute dataSourceTableId: demo-test-ds:customers dataSourceTablePath: - demo - customers + description: Customers + grain: + - id: customer_id + type: attribute + tags: + - Customers + title: Customers type: NORMAL id: customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/customers type: dataset - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true primary: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region valueType: TEXT id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/region type: label - attributes: - title: Category description: Category - tags: - - Products + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category valueType: TEXT id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/products.category type: label - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.week type: label - attributes: - title: Location description: Location - tags: - - Customers + isNullable: true primary: false sourceColumn: geo__state__location sourceColumnDataType: STRING + tags: + - Customers + title: Location valueType: GEO id: geo__state__location links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/geo__state__location + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/geo__state__location type: label - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false primary: true sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id valueType: TEXT id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_id type: label - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false primary: true sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id valueType: TEXT id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_line_id type: label - attributes: - title: Products - description: Products - tags: - - Products - grain: - - id: product_id - type: attribute dataSourceTableId: demo-test-ds:products dataSourceTablePath: - demo - products + description: Products + grain: + - id: product_id + type: attribute + tags: + - Products + title: Products type: NORMAL id: products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/products + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/products type: dataset - attributes: - title: Date description: '' tags: - Date + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date type: dataset - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category valueType: TEXT id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channels.category type: label - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false primary: true sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id valueType: TEXT id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_id type: label - attributes: - title: Date - Year description: Year - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.year type: label - attributes: - title: State description: State - tags: - - Customers + isNullable: true primary: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State valueType: TEXT id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/state type: label - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false primary: true sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id valueType: TEXT id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_id type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1881' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -1037,9 +1017,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1048,16 +1026,35 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 + response: body: string: data: - attributes: - title: Campaign channels + areRelationsValid: true + dataSourceTableId: demo-test-ds:campaign_channels + dataSourceTablePath: + - demo + - campaign_channels description: Campaign channels - tags: - - Campaign channels grain: - id: campaign_channel_id type: attribute @@ -1066,25 +1063,23 @@ interactions: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:campaign_channels - dataSourceTablePath: - - demo - - campaign_channels - areRelationsValid: true + tags: + - Campaign channels + title: Campaign channels type: NORMAL id: campaign_channels links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels meta: origin: originId: demo @@ -1106,35 +1101,35 @@ interactions: type: fact type: dataset - attributes: - title: Campaign channels per category + areRelationsValid: true description: Campaign channels per categories - tags: - - Campaign channels per category + precedence: 1 referenceProperties: - identifier: id: campaign_channels type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_channel_id dataType: STRING + isNullable: true + nullValue: null target: id: campaign_channel_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null sql: + dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category - dataSourceId: demo-test-ds - precedence: 1 - areRelationsValid: true + tags: + - Campaign channels per category + title: Campaign channels per category type: NORMAL id: campaign_channels_per_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels_per_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels_per_category meta: origin: originId: demo @@ -1146,22 +1141,22 @@ interactions: type: aggregatedFact type: dataset - attributes: - title: Campaigns - description: Campaigns - tags: - - Campaigns - grain: - - id: campaign_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:campaigns dataSourceTablePath: - demo - campaigns - areRelationsValid: true + description: Campaigns + grain: + - id: campaign_id + type: attribute + tags: + - Campaigns + title: Campaigns type: NORMAL id: campaigns links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaigns + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaigns meta: origin: originId: demo @@ -1175,22 +1170,22 @@ interactions: type: attribute type: dataset - attributes: - title: Customers - description: Customers - tags: - - Customers - grain: - - id: customer_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:customers dataSourceTablePath: - demo - customers - areRelationsValid: true + description: Customers + grain: + - id: customer_id + type: attribute + tags: + - Customers + title: Customers type: NORMAL id: customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/customers meta: origin: originId: demo @@ -1208,15 +1203,15 @@ interactions: type: attribute type: dataset - attributes: - title: Date + areRelationsValid: true description: '' tags: - Date - areRelationsValid: true + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date meta: origin: originId: demo @@ -1236,95 +1231,95 @@ interactions: type: attribute type: dataset - attributes: - title: Order lines + areRelationsValid: true + dataSourceTableId: demo-test-ds:order_lines + dataSourceTablePath: + - demo + - order_lines description: Order lines - tags: - - Order lines grain: - id: order_line_id type: attribute referenceProperties: - identifier: - id: date + id: customers type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: date - dataType: DATE - target: - id: date - type: date - isNullable: null + - column: customer_id + dataType: INT + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null + target: + id: customer_id + type: attribute - identifier: id: products type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: product_id dataType: INT + isNullable: true + nullValue: null target: id: product_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: customers + id: date type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: customer_id - dataType: INT - target: - id: customer_id - type: attribute - isNullable: null + - column: date + dataType: DATE + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:order_lines - dataSourceTablePath: - - demo - - order_lines - areRelationsValid: true + target: + id: date + type: date + tags: + - Order lines + title: Order lines + type: NORMAL workspaceDataFilterColumns: - - name: wdf__region - dataType: STRING - - name: wdf__state - dataType: STRING + - dataType: STRING + name: wdf__state + - dataType: STRING + name: wdf__region workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__state + filterColumnDataType: STRING + filterId: id: wdf__state type: workspaceDataFilter - filterColumn: wdf__state + - filterColumn: wdf__region filterColumnDataType: STRING - - filterId: + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region - filterColumnDataType: STRING - type: NORMAL id: order_lines links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/order_lines + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/order_lines meta: origin: originId: demo @@ -1346,22 +1341,22 @@ interactions: type: fact type: dataset - attributes: - title: Products - description: Products - tags: - - Products - grain: - - id: product_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:products dataSourceTablePath: - demo - products - areRelationsValid: true + description: Products + grain: + - id: product_id + type: attribute + tags: + - Products + title: Products type: NORMAL id: products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/products + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/products meta: origin: originId: demo @@ -1378,302 +1373,304 @@ interactions: type: dataset included: - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id type: attribute - attributes: - title: Budget description: Budget - tags: - - Campaign channels + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget id: budget links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/budget + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/budget type: fact - attributes: - title: Date - Year description: Year + granularity: YEAR tags: - Date - granularity: YEAR + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year type: attribute - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name type: attribute - attributes: - title: Date - Month/Year description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month type: attribute - attributes: - title: Category description: Category - tags: - - Products + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category type: attribute - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter type: attribute - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category type: attribute - attributes: - title: State description: State - tags: - - Customers + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state type: attribute - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week type: attribute - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id type: attribute - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name type: attribute - attributes: - title: Price description: Price - tags: - - Order lines + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price id: price links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/price + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/price type: fact - attributes: description: Budget Agg - tags: - - Campaign channels per category + operation: SUM sourceColumn: budget sourceColumnDataType: INT - operation: SUM + tags: + - Campaign channels per category id: budget_agg links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg + self: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg type: aggregatedFact - attributes: - title: Date - Date description: Date + granularity: DAY tags: - Date - granularity: DAY + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day type: attribute - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region type: attribute - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id type: attribute - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id type: attribute - attributes: - title: Quantity description: Quantity - tags: - - Order lines + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity id: quantity links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/quantity + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/quantity type: fact - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id type: attribute - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type type: attribute - attributes: - title: Spend description: Spend - tags: - - Campaign channels + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend id: spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/spend type: fact - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status type: attribute - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name type: attribute - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id type: attribute links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1765' Content-Type: - application/json DATE: *id001 @@ -1684,9 +1681,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1695,392 +1690,438 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + response: body: string: data: - attributes: - title: '# of Active Customers' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Orders' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Orders' id: amount_of_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Top Customers' areRelationsValid: true content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Top Customers' id: amount_of_top_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Valid Orders' - description: '' areRelationsValid: true content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + description: '' + title: '# of Valid Orders' id: amount_of_valid_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Campaign Spend areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Campaign Spend id: campaign_spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/campaign_spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/campaign_spend meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Order Amount areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Order Amount id: order_amount links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/order_amount + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/order_amount meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue' id: percent_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue in Category' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue in Category' id: percent_revenue_in_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue per Product' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue per Product' id: percent_revenue_per_product links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue - description: '' areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + description: '' + title: Revenue id: revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Clothing) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Clothing) id: revenue-clothing links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-clothing + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-clothing meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Electronic) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Electronic) id: revenue-electronic links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-electronic + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-electronic meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Home) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Home) id: revenue-home links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-home + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-home meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Outdoor) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Outdoor) id: revenue-outdoor links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-outdoor + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-outdoor meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Customer areRelationsValid: true content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Dollar Spent areRelationsValid: true content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10 areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue / Top 10 id: revenue_top_10 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10 meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10% areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue / Top 10% id: revenue_top_10_percent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Total Revenue id: total_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue (No Filters) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Total Revenue (No Filters) id: total_revenue-no_filters links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters meta: origin: originId: demo originType: NATIVE type: metric links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1089' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/afm/computeValidObjects body: afm: attributes: [] @@ -2088,12 +2129,12 @@ interactions: measures: - definition: measure: + computeRatio: false + filters: [] item: identifier: id: campaign_spend type: metric - computeRatio: false - filters: [] localIdentifier: campaign_spend types: - facts @@ -2110,40 +2151,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/computeValidObjects response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: items: @@ -2213,3 +2223,35 @@ interactions: type: metric - id: total_revenue type: metric + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '269' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_aggregated_facts.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_aggregated_facts.yaml index d9e5550b1..cabbdcb24 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_aggregated_facts.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_aggregated_facts.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts?page=0&size=500 body: null headers: Accept: @@ -14,15 +11,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + areRelationsValid: true + description: Budget Agg + operation: SUM + sourceColumn: budget + sourceColumnDataType: INT + tags: + - Campaign channels per category + id: budget_agg + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg + meta: + origin: + originId: demo + originType: NATIVE + type: aggregatedFact + links: + next: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '705' Content-Type: @@ -36,35 +52,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - description: Budget Agg - tags: - - Campaign channels per category - sourceColumn: budget - sourceColumnDataType: INT - areRelationsValid: true - operation: SUM - id: budget_agg - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg - meta: - origin: - originId: demo - originType: NATIVE - type: aggregatedFact - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml index bb52f85f8..c9b423150 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels&page=0&size=500 body: null headers: Accept: @@ -14,55 +11,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: Campaign channel id - description: Campaign channel id - tags: - - Campaign channels areRelationsValid: true + description: Campaign channel id + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id meta: origin: originId: demo @@ -74,16 +40,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Campaign channels areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category meta: origin: originId: demo @@ -95,16 +62,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign id - description: Campaign id - tags: - - Campaigns areRelationsValid: true + description: Campaign id + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id meta: origin: originId: demo @@ -116,16 +84,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign name - description: Campaign name - tags: - - Campaigns areRelationsValid: true + description: Campaign name + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name meta: origin: originId: demo @@ -137,16 +106,17 @@ interactions: type: label type: attribute - attributes: - title: Customer id - description: Customer id - tags: - - Customers areRelationsValid: true + description: Customer id + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id meta: origin: originId: demo @@ -158,16 +128,17 @@ interactions: type: label type: attribute - attributes: - title: Customer name - description: Customer name - tags: - - Customers areRelationsValid: true + description: Customer name + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name meta: origin: originId: demo @@ -179,15 +150,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Date + areRelationsValid: true description: Date + granularity: DAY tags: - Date - granularity: DAY - areRelationsValid: true + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day meta: origin: originId: demo @@ -199,15 +170,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Month/Year + areRelationsValid: true description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH - areRelationsValid: true + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month meta: origin: originId: demo @@ -219,15 +190,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Quarter/Year + areRelationsValid: true description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER - areRelationsValid: true + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter meta: origin: originId: demo @@ -239,15 +210,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Week/Year + areRelationsValid: true description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK - areRelationsValid: true + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week meta: origin: originId: demo @@ -259,15 +230,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Year + areRelationsValid: true description: Year + granularity: YEAR tags: - Date - granularity: YEAR - areRelationsValid: true + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year meta: origin: originId: demo @@ -279,16 +250,17 @@ interactions: type: label type: attribute - attributes: - title: Order id - description: Order id - tags: - - Order lines areRelationsValid: true + description: Order id + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id meta: origin: originId: demo @@ -300,16 +272,17 @@ interactions: type: label type: attribute - attributes: - title: Order line id - description: Order line id - tags: - - Order lines areRelationsValid: true + description: Order line id + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id meta: origin: originId: demo @@ -321,16 +294,17 @@ interactions: type: label type: attribute - attributes: - title: Order status - description: Order status - tags: - - Order lines areRelationsValid: true + description: Order status + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status meta: origin: originId: demo @@ -342,16 +316,17 @@ interactions: type: label type: attribute - attributes: - title: Product id - description: Product id - tags: - - Products areRelationsValid: true + description: Product id + isNullable: false sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id meta: origin: originId: demo @@ -363,16 +338,17 @@ interactions: type: label type: attribute - attributes: - title: Product name - description: Product name - tags: - - Products areRelationsValid: true + description: Product name + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name meta: origin: originId: demo @@ -384,16 +360,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Products areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category meta: origin: originId: demo @@ -405,16 +382,17 @@ interactions: type: label type: attribute - attributes: - title: Region - description: Region - tags: - - Customers areRelationsValid: true + description: Region + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region meta: origin: originId: demo @@ -426,16 +404,17 @@ interactions: type: label type: attribute - attributes: - title: State - description: State - tags: - - Customers areRelationsValid: true + description: State + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state meta: origin: originId: demo @@ -449,16 +428,17 @@ interactions: type: label type: attribute - attributes: - title: Type - description: Type - tags: - - Campaign channels areRelationsValid: true + description: Type + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type meta: origin: originId: demo @@ -471,268 +451,317 @@ interactions: type: attribute included: - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true primary: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name valueType: TEXT id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_name type: label - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status valueType: TEXT id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_status type: label - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true primary: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name valueType: TEXT id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_name type: label - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.week type: label - attributes: - title: Location description: Location - tags: - - Customers + isNullable: true primary: false sourceColumn: geo__state__location sourceColumnDataType: STRING + tags: + - Customers + title: Location valueType: GEO id: geo__state__location links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/geo__state__location + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/geo__state__location type: label - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false primary: true sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id valueType: TEXT id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_id type: label - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false primary: true sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id valueType: TEXT id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_line_id type: label - attributes: - title: Date - Month/Year description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month type: label - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.quarter type: label - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false primary: true sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id valueType: TEXT id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channel_id type: label - attributes: - title: Date - Date description: Date - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.day type: label - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id valueType: TEXT id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_id type: label - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category valueType: TEXT id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channels.category type: label - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true primary: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name valueType: TEXT id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_name type: label - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type valueType: TEXT id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/type type: label - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true primary: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region valueType: TEXT id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/region type: label - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false primary: true sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id valueType: TEXT id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_id type: label - attributes: - title: Date - Year description: Year - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.year type: label - attributes: - title: State description: State - tags: - - Customers + isNullable: true primary: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State valueType: TEXT id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/state type: label - attributes: - title: Category description: Category - tags: - - Products + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category valueType: TEXT id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/products.category type: label - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false primary: true sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id valueType: TEXT id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_id type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels&page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1366' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_facts.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_facts.yaml index a4afed4e3..7730760f6 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_facts.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_facts.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts?page=0&size=500 body: null headers: Accept: @@ -14,108 +11,113 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/facts?page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: Budget + areRelationsValid: true description: Budget - tags: - - Campaign channels + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC - areRelationsValid: true + tags: + - Campaign channels + title: Budget id: budget links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/budget + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/budget meta: origin: originId: demo originType: NATIVE type: fact - attributes: - title: Price + areRelationsValid: true description: Price - tags: - - Order lines + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC - areRelationsValid: true + tags: + - Order lines + title: Price id: price links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/price + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/price meta: origin: originId: demo originType: NATIVE type: fact - attributes: - title: Quantity + areRelationsValid: true description: Quantity - tags: - - Order lines + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC - areRelationsValid: true + tags: + - Order lines + title: Quantity id: quantity links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/quantity + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/quantity meta: origin: originId: demo originType: NATIVE type: fact - attributes: - title: Spend + areRelationsValid: true description: Spend - tags: - - Campaign channels + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC - areRelationsValid: true + tags: + - Campaign channels + title: Spend id: spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/spend meta: origin: originId: demo originType: NATIVE type: fact links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/facts?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '381' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_labels.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_labels.yaml index 8f09bf9e9..3c2555c94 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_labels.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_labels.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels?page=0&size=500 body: null headers: Accept: @@ -14,412 +11,429 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/labels?page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: Campaign channel id + areRelationsValid: true description: Campaign channel id - tags: - - Campaign channels + isNullable: false primary: true sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id valueType: TEXT - areRelationsValid: true id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channel_id meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Category + areRelationsValid: true description: Category - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category valueType: TEXT - areRelationsValid: true id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channels.category meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Campaign id + areRelationsValid: true description: Campaign id - tags: - - Campaigns + isNullable: false primary: true sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id valueType: TEXT - areRelationsValid: true id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_id meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Campaign name + areRelationsValid: true description: Campaign name - tags: - - Campaigns + isNullable: true primary: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name valueType: TEXT - areRelationsValid: true id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_name meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Customer id + areRelationsValid: true description: Customer id - tags: - - Customers + isNullable: false primary: true sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id valueType: TEXT - areRelationsValid: true id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_id meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Customer name + areRelationsValid: true description: Customer name - tags: - - Customers + isNullable: true primary: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name valueType: TEXT - areRelationsValid: true id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_name meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Date - Date + areRelationsValid: true description: Date - tags: - - Date primary: true sourceColumn: '' - areRelationsValid: true + tags: + - Date + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.day meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Date - Month/Year + areRelationsValid: true description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' - areRelationsValid: true + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Date - Quarter/Year + areRelationsValid: true description: Quarter and Year (Q1/2020) - tags: - - Date primary: true sourceColumn: '' - areRelationsValid: true + tags: + - Date + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.quarter meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Date - Week/Year + areRelationsValid: true description: Week and Year (W52/2020) - tags: - - Date primary: true sourceColumn: '' - areRelationsValid: true + tags: + - Date + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.week meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Date - Year + areRelationsValid: true description: Year - tags: - - Date primary: true sourceColumn: '' - areRelationsValid: true + tags: + - Date + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.year meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Location + areRelationsValid: true description: Location - tags: - - Customers + isNullable: true primary: false sourceColumn: geo__state__location sourceColumnDataType: STRING + tags: + - Customers + title: Location valueType: GEO - areRelationsValid: true id: geo__state__location links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/geo__state__location + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/geo__state__location meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Order id + areRelationsValid: true description: Order id - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id valueType: TEXT - areRelationsValid: true id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_id meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Order line id + areRelationsValid: true description: Order line id - tags: - - Order lines + isNullable: false primary: true sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id valueType: TEXT - areRelationsValid: true id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_line_id meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Order status + areRelationsValid: true description: Order status - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status valueType: TEXT - areRelationsValid: true id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_status meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Product id + areRelationsValid: true description: Product id - tags: - - Products + isNullable: false primary: true sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id valueType: TEXT - areRelationsValid: true id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_id meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Product name + areRelationsValid: true description: Product name - tags: - - Products + isNullable: true primary: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name valueType: TEXT - areRelationsValid: true id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_name meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Category + areRelationsValid: true description: Category - tags: - - Products + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category valueType: TEXT - areRelationsValid: true id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/products.category meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Region + areRelationsValid: true description: Region - tags: - - Customers + isNullable: true primary: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region valueType: TEXT - areRelationsValid: true id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/region meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: State + areRelationsValid: true description: State - tags: - - Customers + isNullable: true primary: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State valueType: TEXT - areRelationsValid: true id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/state meta: origin: originId: demo originType: NATIVE type: label - attributes: - title: Type + areRelationsValid: true description: Type - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type valueType: TEXT - areRelationsValid: true id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/type meta: origin: originId: demo originType: NATIVE type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/labels?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '823' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml index ae0394f4e..b55328409 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 body: null headers: Accept: @@ -14,419 +11,420 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: - attributes: - title: '# of Active Customers' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Orders' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '# of Orders' id: amount_of_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Top Customers' areRelationsValid: true content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '# of Top Customers' id: amount_of_top_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Valid Orders' - description: '' areRelationsValid: true content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + description: '' + title: '# of Valid Orders' id: amount_of_valid_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Campaign Spend areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Campaign Spend id: campaign_spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/campaign_spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/campaign_spend meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Order Amount areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Order Amount id: order_amount links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/order_amount + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/order_amount meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue' id: percent_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue in Category' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue in Category' id: percent_revenue_in_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue per Product' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: '% Revenue per Product' id: percent_revenue_per_product links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue - description: '' areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + description: '' + title: Revenue id: revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Clothing) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue (Clothing) id: revenue-clothing links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-clothing + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-clothing meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Electronic) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue (Electronic) id: revenue-electronic links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-electronic + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-electronic meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Home) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue (Home) id: revenue-home links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-home + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-home meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Outdoor) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue (Outdoor) id: revenue-outdoor links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-outdoor + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-outdoor meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Customer areRelationsValid: true content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Dollar Spent areRelationsValid: true content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10 areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue / Top 10 id: revenue_top_10 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10 meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10% areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Revenue / Top 10% id: revenue_top_10_percent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Total Revenue id: total_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue (No Filters) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 + title: Total Revenue (No Filters) id: total_revenue-no_filters links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters meta: origin: originId: demo originType: NATIVE type: metric links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1089' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model.yaml index 3ee85f6b9..945fc7fc5 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,46 +25,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -148,143 +113,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -309,19 +274,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -329,15 +294,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -479,6 +444,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -582,9 +548,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -807,9 +773,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1372,3 +1338,36 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model_child.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model_child.yaml index c8eb5ab6c..3d80c48c3 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model_child.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_analytics_model_child.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_west/analyticsModel?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,17 +11,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_west/analyticsModel?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK + body: + string: + analytics: + analyticalDashboardExtensions: + - id: campaign + permissions: + - assigneeRule: + type: allWorkspaceUsers + name: VIEW + analyticalDashboards: [] + attributeHierarchies: [] + dashboardPlugins: [] + exportDefinitions: [] + filterContexts: [] + memoryItems: [] + metrics: [] + parameters: [] + visualizationObjects: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '316' + - '332' Content-Type: - application/json DATE: &id001 @@ -36,30 +48,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - analytics: - analyticalDashboardExtensions: - - id: campaign - permissions: - - assigneeRule: - type: allWorkspaceUsers - name: VIEW - analyticalDashboards: [] - attributeHierarchies: [] - dashboardPlugins: [] - exportDefinitions: [] - filterContexts: [] - memoryItems: [] - metrics: [] - visualizationObjects: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_ldm.yaml index 0232a06d7..1d19d4524 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_declarative_ldm.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -57,6 +22,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -65,6 +31,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -73,6 +40,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -90,6 +58,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -97,6 +66,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -114,6 +84,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -146,6 +117,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -160,6 +132,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -168,6 +141,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -195,6 +169,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -203,6 +178,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -211,6 +187,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -219,9 +196,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -254,6 +233,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -262,6 +242,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -270,6 +251,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -287,6 +269,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -294,6 +277,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -311,6 +295,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -321,6 +306,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -331,6 +317,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -341,6 +328,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -362,6 +350,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -370,6 +359,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -378,6 +368,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -416,3 +407,36 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml index 1a546fa32..0b876fa6b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/dependentEntitiesGraph body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/dependentEntitiesGraph response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: graph: @@ -71,7 +36,7 @@ interactions: type: dataset - - id: customer_id type: attribute - - id: revenue_per_customer + - id: percent_revenue_from_top_10_customers type: metric - - id: customer_id type: attribute @@ -81,17 +46,17 @@ interactions: type: attribute - id: percent_revenue_from_top_10_percent_customers type: metric - - - id: customer_id - type: attribute - - id: customers - type: dataset - - id: customer_id type: attribute - id: amount_of_top_customers type: metric - - id: customer_id type: attribute - - id: percent_revenue_from_top_10_customers + - id: customers + type: dataset + - - id: customer_id + type: attribute + - id: revenue_per_customer type: metric - - id: customer_name type: attribute @@ -113,22 +78,22 @@ interactions: type: attribute - id: date type: dataset - - - id: date.year - type: attribute - - id: date - type: dataset - - id: date.year type: attribute - id: product_revenue_comparison-over_previous_period type: visualizationObject - - - id: order_id + - - id: date.year type: attribute - - id: amount_of_orders - type: metric + - id: date + type: dataset - - id: order_id type: attribute - id: order_lines type: dataset + - - id: order_id + type: attribute + - id: amount_of_orders + type: metric - - id: order_line_id type: attribute - id: amount_of_active_customers @@ -209,22 +174,22 @@ interactions: type: dataset - id: percentage_of_customers_by_region type: visualizationObject - - - id: date - type: dataset - - id: order_lines - type: dataset - - id: date type: dataset - id: product_revenue_comparison-over_previous_period type: visualizationObject - - id: date type: dataset - - id: revenue_trend - type: visualizationObject + - id: order_lines + type: dataset - - id: date type: dataset - id: product_and_category type: analyticalDashboard + - - id: date + type: dataset + - id: revenue_trend + type: visualizationObject - - id: date type: dataset - id: customers_trend @@ -261,14 +226,14 @@ interactions: type: fact - id: revenue_and_quantity_by_product_and_category type: visualizationObject - - - id: spend - type: fact - - id: campaign_spend - type: metric - - id: spend type: fact - id: campaign_channels type: dataset + - - id: spend + type: fact + - id: campaign_spend + type: metric - - id: campaign_channel_id type: label - id: campaign_channel_id @@ -285,6 +250,10 @@ interactions: type: label - id: campaign_id type: attribute + - - id: campaign_name + type: label + - id: campaign_spend + type: visualizationObject - - id: campaign_name type: label - id: revenue_per_usd_vs_spend_by_campaign @@ -297,10 +266,6 @@ interactions: type: label - id: campaign_name type: attribute - - - id: campaign_name - type: label - - id: campaign_spend - type: visualizationObject - - id: customer_id type: label - id: customer_id @@ -331,19 +296,19 @@ interactions: type: visualizationObject - - id: date.month type: label - - id: date.month - type: attribute + - id: percentage_of_customers_by_region + type: visualizationObject - - id: date.month type: label - id: revenue_trend type: visualizationObject - - id: date.month type: label - - id: customers_trend - type: visualizationObject + - id: date.month + type: attribute - - id: date.month type: label - - id: percentage_of_customers_by_region + - id: customers_trend type: visualizationObject - - id: date.quarter type: label @@ -371,47 +336,43 @@ interactions: type: attribute - - id: order_status type: label - - id: order_status - type: attribute + - id: amount_of_valid_orders + type: metric - - id: order_status type: label - id: revenue type: metric - - id: order_status type: label - - id: amount_of_valid_orders - type: metric + - id: order_status + type: attribute - - id: product_id type: label - id: product_id type: attribute - - id: product_name type: label - - id: product_breakdown + - id: top_10_products type: visualizationObject - - id: product_name type: label - - id: percent_revenue_per_product_by_customer_and_category + - id: product_revenue_comparison-over_previous_period type: visualizationObject - - - id: product_name - type: label - - id: product_name - type: attribute - - id: product_name type: label - id: product_saleability type: visualizationObject - - id: product_name type: label - - id: product_revenue_comparison-over_previous_period + - id: revenue_and_quantity_by_product_and_category type: visualizationObject - - id: product_name type: label - - id: revenue_and_quantity_by_product_and_category - type: visualizationObject + - id: product_name + type: attribute - - id: product_name type: label - - id: revenue_by_product + - id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - - id: product_name type: label @@ -419,31 +380,19 @@ interactions: type: visualizationObject - - id: product_name type: label - - id: top_10_products + - id: revenue_by_product type: visualizationObject - - - id: products.category + - - id: product_name type: label - id: product_breakdown type: visualizationObject - - - id: products.category - type: label - - id: revenue-clothing - type: metric - - id: products.category type: label - id: revenue_by_category_trend type: visualizationObject - - id: products.category type: label - - id: revenue-electronic - type: metric - - - id: products.category - type: label - - id: products.category - type: attribute - - - id: products.category - type: label - - id: percent_revenue_per_product_by_customer_and_category + - id: top_10_products type: visualizationObject - - id: products.category type: label @@ -451,7 +400,7 @@ interactions: type: metric - - id: products.category type: label - - id: revenue-outdoor + - id: revenue-clothing type: metric - - id: products.category type: label @@ -461,13 +410,29 @@ interactions: type: label - id: revenue_and_quantity_by_product_and_category type: visualizationObject + - - id: products.category + type: label + - id: percent_revenue_per_product_by_customer_and_category + type: visualizationObject - - id: products.category type: label - id: product_categories_pie_chart type: visualizationObject - - id: products.category type: label - - id: top_10_products + - id: products.category + type: attribute + - - id: products.category + type: label + - id: revenue-electronic + type: metric + - - id: products.category + type: label + - id: revenue-outdoor + type: metric + - - id: products.category + type: label + - id: product_breakdown type: visualizationObject - - id: region type: label @@ -497,10 +462,6 @@ interactions: type: label - id: campaign_spend type: visualizationObject - - - id: amount_of_active_customers - type: metric - - id: customers_trend - type: visualizationObject - - id: amount_of_active_customers type: metric - id: amount_of_top_customers @@ -509,6 +470,10 @@ interactions: type: metric - id: percentage_of_customers_by_region type: visualizationObject + - - id: amount_of_active_customers + type: metric + - id: customers_trend + type: visualizationObject - - id: amount_of_orders type: metric - id: amount_of_valid_orders @@ -521,10 +486,6 @@ interactions: type: metric - id: revenue_trend type: visualizationObject - - - id: campaign_spend - type: metric - - id: revenue_per_usd_vs_spend_by_campaign - type: visualizationObject - - id: campaign_spend type: metric - id: revenue_per_dollar_spent @@ -533,6 +494,10 @@ interactions: type: metric - id: campaign_spend type: visualizationObject + - - id: campaign_spend + type: metric + - id: revenue_per_usd_vs_spend_by_campaign + type: visualizationObject - - id: order_amount type: metric - id: revenue @@ -547,15 +512,11 @@ interactions: type: visualizationObject - - id: revenue type: metric - - id: revenue-clothing - type: metric - - - id: revenue - type: metric - - id: revenue_top_10 + - id: percent_revenue_from_top_10_customers type: metric - - id: revenue type: metric - - id: percent_revenue_per_product_by_customer_and_category + - id: revenue_by_category_trend type: visualizationObject - - id: revenue type: metric @@ -563,11 +524,11 @@ interactions: type: metric - - id: revenue type: metric - - id: revenue-home + - id: percent_revenue_per_product type: metric - - id: revenue type: metric - - id: percent_revenue_from_top_10_percent_products + - id: revenue-clothing type: metric - - id: revenue type: metric @@ -575,59 +536,55 @@ interactions: type: visualizationObject - - id: revenue type: metric - - id: revenue-outdoor + - id: percent_revenue_from_top_10_percent_customers type: metric - - id: revenue type: metric - - id: revenue_per_customer + - id: percent_revenue type: metric - - id: revenue type: metric - - id: revenue_per_dollar_spent + - id: total_revenue type: metric - - id: revenue type: metric - - id: revenue_trend + - id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - - id: revenue type: metric - - id: percent_revenue - type: metric - - - id: revenue - type: metric - - id: revenue_by_product + - id: product_categories_pie_chart type: visualizationObject - - id: revenue type: metric - - id: percent_revenue_from_top_10_customers - type: metric + - id: revenue_trend + type: visualizationObject - - id: revenue type: metric - id: revenue_top_10_percent type: metric - - id: revenue type: metric - - id: product_categories_pie_chart + - id: revenue_by_product type: visualizationObject - - id: revenue type: metric - - id: total_revenue + - id: revenue-electronic type: metric - - id: revenue type: metric - - id: product_breakdown - type: visualizationObject + - id: revenue-outdoor + type: metric - - id: revenue type: metric - - id: revenue_by_category_trend - type: visualizationObject + - id: revenue_per_customer + type: metric - - id: revenue type: metric - - id: revenue-electronic + - id: revenue_per_dollar_spent type: metric - - id: revenue type: metric - - id: percent_revenue_from_top_10_percent_customers + - id: percent_revenue_from_top_10_percent_products type: metric - - id: revenue type: metric @@ -635,7 +592,7 @@ interactions: type: metric - - id: revenue type: metric - - id: percent_revenue_per_product + - id: revenue-home type: metric - - id: revenue type: metric @@ -643,12 +600,20 @@ interactions: type: visualizationObject - - id: revenue type: metric - - id: revenue_and_quantity_by_product_and_category - type: visualizationObject + - id: revenue_top_10 + type: metric - - id: revenue type: metric - id: amount_of_top_customers type: metric + - - id: revenue + type: metric + - id: revenue_and_quantity_by_product_and_category + type: visualizationObject + - - id: revenue + type: metric + - id: product_breakdown + type: visualizationObject - - id: revenue_per_customer type: metric - id: customers_trend @@ -661,6 +626,10 @@ interactions: type: metric - id: percent_revenue_from_top_10_customers type: metric + - - id: revenue_top_10 + type: metric + - id: top_10_products + type: visualizationObject - - id: revenue_top_10 type: metric - id: percent_revenue_from_top_10_products @@ -669,10 +638,6 @@ interactions: type: metric - id: top_10_customers type: visualizationObject - - - id: revenue_top_10 - type: metric - - id: top_10_products - type: visualizationObject - - id: revenue_top_10_percent type: metric - id: percent_revenue_from_top_10_percent_customers @@ -683,11 +648,11 @@ interactions: type: metric - - id: total_revenue type: metric - - id: percent_revenue + - id: total_revenue-no_filters type: metric - - id: total_revenue type: metric - - id: total_revenue-no_filters + - id: percent_revenue type: metric - - id: campaign_spend type: visualizationObject @@ -1036,3 +1001,36 @@ interactions: - id: region_filter title: filterContext type: filterContext + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph_from_entry_points.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph_from_entry_points.yaml index 6dcf93052..1596c9a9f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph_from_entry_points.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph_from_entry_points.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/dependentEntitiesGraph body: identifiers: - id: campaign_channel_id @@ -19,15 +16,34 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/dependentEntitiesGraph response: - status: - code: 200 - message: OK + body: + string: + graph: + edges: + - - id: campaign_channel_id + type: attribute + - id: campaign_channels + type: dataset + - - id: campaign_channels + type: dataset + - id: campaign_channels_per_category + type: dataset + nodes: + - id: campaign_channel_id + title: Campaign channel id + type: attribute + - id: campaign_channels + title: Campaign channels + type: dataset + - id: campaign_channels_per_category + title: Campaign channels per category + type: dataset headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '476' Content-Type: @@ -41,35 +57,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - graph: - edges: - - - id: campaign_channel_id - type: attribute - - id: campaign_channels - type: dataset - - - id: campaign_channels - type: dataset - - id: campaign_channels_per_category - type: dataset - nodes: - - id: campaign_channel_id - title: Campaign channel id - type: attribute - - id: campaign_channels - title: Campaign channels - type: dataset - - id: campaign_channels_per_category - title: Campaign channels per category - type: dataset + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml index b7b56943d..f657c8857 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing?include=workspaces body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_testing?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 74a7c46bd75a944dc1f35a7e943adf8d headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -32,32 +33,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: a63b4b8178a2dc022556694b2d9b342d + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_testing - type: workspace attributes: name: demo_testing + id: demo_testing + type: workspace headers: Accept: - application/json @@ -69,15 +65,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: demo_testing + id: demo_testing + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_testing headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '204' Content-Type: @@ -90,28 +92,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo_testing - id: demo_testing - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -122,40 +117,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -164,6 +128,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -172,6 +137,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -180,6 +146,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -197,6 +164,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -204,6 +172,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -221,6 +190,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -253,6 +223,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -267,6 +238,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -275,6 +247,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -302,6 +275,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -310,6 +284,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -318,6 +293,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -326,9 +302,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -361,6 +339,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -369,6 +348,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -377,6 +357,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -394,6 +375,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -401,6 +383,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -418,6 +401,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -428,6 +412,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -438,6 +423,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -448,6 +434,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -469,6 +456,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -477,6 +465,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -485,6 +474,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -523,9 +513,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 body: null headers: Accept: @@ -536,15 +555,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds + type: dataSource + links: + next: http://localhost:3000/api/v1/entities/dataSources?page=1&size=500 + self: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '671' Content-Type: @@ -557,238 +591,290 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers - attributes: - - id: customer_id + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -799,142 +885,101 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region - dataType: STRING name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -944,10 +989,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -957,15 +1001,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -974,21 +1017,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 body: null headers: Accept: @@ -999,15 +1042,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: + - attributes: + alternativeDataSourceId: ds-put-abc-id + authenticationType: USERNAME_PASSWORD + name: demo-test-ds + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer + username: postgres + id: demo-test-ds + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-test-ds + type: dataSource + links: + next: http://localhost:3000/api/v1/entities/dataSources?page=1&size=500 + self: http://localhost:3000/api/v1/entities/dataSources?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '671' Content-Type: @@ -1020,384 +1078,395 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - url: jdbc:postgresql://postgresql-ha-pgpool.postgresql-ha/tiger_tests?sslmode=prefer - username: postgres - authenticationType: USERNAME_PASSWORD - alternativeDataSourceId: ds-put-abc-id - name: demo-test-ds - type: POSTGRESQL - schema: demo - id: demo-test-ds - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-test-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines + title: Customers + - aggregatedFacts: [] attributes: - - id: order_id + - description: Order id + id: order_id + isNullable: true labels: [] sourceColumn: order_id - title: Order id sourceColumnDataType: STRING - description: Order id tags: - Order lines - - id: order_line_id + title: Order id + - description: Order line id + id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id - title: Order line id sourceColumnDataType: STRING - description: Order line id tags: - Order lines - - id: order_status + title: Order line id + - description: Order status + id: order_status + isNullable: true labels: [] sourceColumn: order_status - title: Order status sourceColumnDataType: STRING - description: Order status tags: - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines facts: - - id: price + - description: Price + id: price + isNullable: true sourceColumn: price - title: Price sourceColumnDataType: NUMERIC - description: Price tags: - Order lines - - id: quantity + title: Price + - description: Quantity + id: quantity + isNullable: true sourceColumn: quantity - title: Quantity sourceColumnDataType: NUMERIC - description: Quantity tags: - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region - dataType: STRING name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -1407,10 +1476,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -1420,15 +1488,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -1437,21 +1504,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/logicalModel body: null headers: Accept: @@ -1462,40 +1529,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -1504,6 +1540,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1512,6 +1549,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1520,6 +1558,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1537,6 +1576,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1544,6 +1584,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1561,6 +1602,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1593,6 +1635,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1607,6 +1650,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1615,6 +1659,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1642,6 +1687,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1650,6 +1696,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1658,6 +1705,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1666,9 +1714,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1701,6 +1751,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1709,6 +1760,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1717,6 +1769,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1734,6 +1787,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1741,6 +1795,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1758,6 +1813,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1768,6 +1824,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1778,6 +1835,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1788,6 +1846,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1803,6 +1862,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1811,6 +1871,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1819,6 +1880,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1857,9 +1919,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1164' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -1891,9 +1982,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -1905,6 +1994,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -1915,54 +2005,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -2003,200 +2093,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -2218,9 +2309,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -2276,9 +2367,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -2333,6 +2424,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2436,9 +2528,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2661,9 +2753,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3226,207 +3318,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -3437,92 +3596,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -3534,51 +3648,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -3588,10 +3706,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -3603,12 +3721,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -3622,9 +3739,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -3636,18 +3754,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -3656,12 +3774,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -3677,15 +3797,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3694,15 +3813,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml index b9d32ac8e..4a5ba9d91 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing?include=workspaces body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_testing?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 8c063e5141115d5de52fab41eaa09ef9 headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -32,32 +33,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 1fe96a2db7a7501919e8f350dac71291 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_testing - type: workspace attributes: name: demo_testing + id: demo_testing + type: workspace headers: Accept: - application/json @@ -69,15 +65,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: demo_testing + id: demo_testing + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_testing headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '204' Content-Type: @@ -90,28 +92,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo_testing - id: demo_testing - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -122,40 +117,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -164,6 +128,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -172,6 +137,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -180,6 +146,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -197,6 +164,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -204,6 +172,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -221,6 +190,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -253,6 +223,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -267,6 +238,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -275,6 +247,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -302,6 +275,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -310,6 +284,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -318,6 +293,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -326,9 +302,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -361,6 +339,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -369,6 +348,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -377,6 +357,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -394,6 +375,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -401,6 +383,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -418,6 +401,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -428,6 +412,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -438,6 +423,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -448,6 +434,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -469,6 +456,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -477,6 +465,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -485,6 +474,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -523,210 +513,307 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -737,142 +824,101 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region - dataType: STRING name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -882,10 +928,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -895,15 +940,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -912,21 +956,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -937,40 +981,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -982,46 +995,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -1070,143 +1083,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -1231,19 +1244,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -1251,15 +1264,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -1401,6 +1414,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1504,9 +1518,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1729,9 +1743,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2294,55 +2308,38 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -2351,44 +2348,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -2399,17 +2412,46 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/analyticsModel body: analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -2458,13 +2500,17 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - id: campaign - title: Campaign + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -2497,6 +2543,10 @@ interactions: type: dashboardPlugin version: '2' version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: dashboard_plugin title: Dashboard plugin - content: @@ -2643,24 +2693,36 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: '' id: product_and_category title: Product & Category - description: '' - analyticalDashboardExtensions: [] attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: @@ -2680,9 +2742,9 @@ interactions: localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: @@ -2696,141 +2758,239 @@ interactions: localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: amount_of_active_customers title: '# of Active Customers' - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: amount_of_orders title: '# of Orders' - content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: amount_of_top_customers title: '# of Top Customers' - content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: order_amount title: Order Amount - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue title: '% Revenue' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_customers title: '% Revenue from Top 10 Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_customers title: '% Revenue from Top 10% Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_products title: '% Revenue from Top 10% Products' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_products title: '% Revenue from Top 10 Products' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_in_category title: '% Revenue in Category' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_per_product title: '% Revenue per Product' - content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-clothing title: Revenue (Clothing) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-electronic title: Revenue (Electronic) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-home title: Revenue (Home) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-outdoor title: Revenue (Outdoor) - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_per_customer title: Revenue per Customer - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_per_dollar_spent title: Revenue per Dollar Spent - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_top_10 title: Revenue / Top 10 - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_top_10_percent title: Revenue / Top 10% - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: total_revenue title: Total Revenue - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2890,6 +3050,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend - content: @@ -2934,9 +3098,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2962,6 +3126,10 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: customers_trend title: Customers Trend - content: @@ -3037,6 +3205,10 @@ interactions: direction: asc version: '2' visualizationUrl: local:table + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_per_product_by_customer_and_category title: '% Revenue per Product by Customer and Category' - content: @@ -3092,6 +3264,10 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percentage_of_customers_by_region title: Percentage of Customers by Region - content: @@ -3145,6 +3321,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_breakdown title: Product Breakdown - content: @@ -3194,6 +3374,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_categories_pie_chart title: Product Categories Pie Chart - content: @@ -3265,6 +3449,10 @@ interactions: visible: false version: '2' visualizationUrl: local:column + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_revenue_comparison-over_previous_period title: Product Revenue Comparison (over previous period) - content: @@ -3318,6 +3506,10 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_saleability title: Product Saleability - content: @@ -3413,6 +3605,10 @@ interactions: direction: asc version: '2' visualizationUrl: local:table + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_and_quantity_by_product_and_category title: Revenue and Quantity by Product and Category - content: @@ -3465,6 +3661,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:line + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_by_category_trend title: Revenue by Category Trend - content: @@ -3500,6 +3700,10 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_by_product title: Revenue by Product - content: @@ -3552,6 +3756,10 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_per_usd_vs_spend_by_campaign title: Revenue per $ vs Spend by Campaign - content: @@ -3616,6 +3824,10 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_trend title: Revenue Trend - content: @@ -3669,6 +3881,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: top_10_customers title: Top 10 Customers - content: @@ -3722,10 +3938,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: top_10_products title: Top 10 Products - exportDefinitions: [] - memoryItems: [] headers: Accept-Encoding: - br, gzip, deflate @@ -3735,15 +3953,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/analyticsModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3752,21 +3969,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/analyticsModel?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -3777,40 +3994,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/analyticsModel?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -4241,6 +4427,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -4344,9 +4531,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -5134,9 +5321,38 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -5168,9 +5384,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -5182,6 +5396,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -5192,54 +5407,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -5280,200 +5495,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -5495,9 +5711,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -5553,9 +5769,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -5610,6 +5826,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -5713,9 +5930,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -5938,9 +6155,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -6503,207 +6720,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -6714,92 +6998,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -6811,51 +7050,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -6865,10 +7108,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -6880,12 +7123,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -6899,9 +7141,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -6913,18 +7156,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -6933,12 +7176,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -6954,15 +7199,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -6971,15 +7215,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml index ed9f96d71..790d346c4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing?include=workspaces body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_testing?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 622adec9e54ff1a57e336557937d4107 headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -32,32 +33,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 61f05aefbadcec24a25dda5e7d9bc910 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_testing - type: workspace attributes: name: demo_testing + id: demo_testing + type: workspace headers: Accept: - application/json @@ -69,15 +65,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: demo_testing + id: demo_testing + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_testing headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '204' Content-Type: @@ -90,28 +92,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo_testing - id: demo_testing - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -122,40 +117,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -164,6 +128,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -172,6 +137,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -180,6 +146,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -197,6 +164,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -204,6 +172,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -221,6 +190,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -253,6 +223,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -267,6 +238,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -275,6 +247,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -302,6 +275,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -310,6 +284,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -318,6 +293,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -326,9 +302,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -361,6 +339,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -369,6 +348,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -377,6 +357,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -394,6 +375,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -401,6 +383,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -418,6 +401,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -428,6 +412,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -438,6 +423,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -448,6 +434,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -469,6 +456,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -477,6 +465,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -485,6 +474,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -523,55 +513,38 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '0' + - '1196' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -580,44 +553,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -628,362 +617,417 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines + title: Customers + - aggregatedFacts: [] attributes: - - id: order_id + - description: Order id + id: order_id + isNullable: true labels: [] sourceColumn: order_id - title: Order id sourceColumnDataType: STRING - description: Order id tags: - Order lines - - id: order_line_id + title: Order id + - description: Order line id + id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id - title: Order line id sourceColumnDataType: STRING - description: Order line id tags: - Order lines - - id: order_status + title: Order line id + - description: Order status + id: order_status + isNullable: true labels: [] sourceColumn: order_status - title: Order status sourceColumnDataType: STRING - description: Order status tags: - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines facts: - - id: price + - description: Price + id: price + isNullable: true sourceColumn: price - title: Price sourceColumnDataType: NUMERIC - description: Price tags: - Order lines - - id: quantity + title: Price + - description: Quantity + id: quantity + isNullable: true sourceColumn: quantity - title: Quantity sourceColumnDataType: NUMERIC - description: Quantity tags: - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region - dataType: STRING name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -993,10 +1037,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -1006,15 +1049,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -1023,21 +1065,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing/logicalModel body: null headers: Accept: @@ -1048,40 +1090,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -1090,6 +1101,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1098,6 +1110,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1106,6 +1119,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1123,6 +1137,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1130,6 +1145,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1147,6 +1163,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1179,6 +1196,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1193,6 +1211,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1201,6 +1220,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1228,6 +1248,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1236,6 +1257,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1244,6 +1266,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1252,9 +1275,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1287,6 +1312,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1295,6 +1321,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1303,6 +1330,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1320,6 +1348,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1327,6 +1356,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1344,6 +1374,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1354,6 +1385,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1364,6 +1396,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1374,6 +1407,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1389,6 +1423,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1397,6 +1432,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1405,6 +1441,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1443,9 +1480,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1164' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -1477,9 +1543,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -1491,6 +1555,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -1501,54 +1566,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -1589,200 +1654,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -1804,9 +1870,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -1862,9 +1928,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -1919,6 +1985,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2022,9 +2089,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2247,9 +2314,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2812,207 +2879,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -3023,92 +3157,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -3120,51 +3209,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -3174,10 +3267,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -3189,12 +3282,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -3208,9 +3300,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -3222,18 +3315,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -3242,12 +3335,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -3263,15 +3358,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3280,15 +3374,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_ldm_and_modify_tables_columns_case.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_ldm_and_modify_tables_columns_case.yaml index 0232a06d7..1d19d4524 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_ldm_and_modify_tables_columns_case.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_ldm_and_modify_tables_columns_case.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -57,6 +22,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -65,6 +31,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -73,6 +40,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -90,6 +58,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -97,6 +66,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -114,6 +84,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -146,6 +117,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -160,6 +132,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -168,6 +141,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -195,6 +169,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -203,6 +178,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -211,6 +187,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -219,9 +196,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -254,6 +233,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -262,6 +242,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -270,6 +251,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -287,6 +269,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -294,6 +277,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -311,6 +295,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -321,6 +306,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -331,6 +317,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -341,6 +328,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -362,6 +350,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -370,6 +359,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -378,6 +368,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -416,3 +407,36 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml index 84cae9a03..cd8785051 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test_put_declarative_analytics_model?include=workspaces body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/test_put_declarative_analytics_model?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: d93a9631265ac23089b081c7c7a96a27 headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -32,32 +33,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 0d71052d5f1267fd96635c5c131df96d + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: test_put_declarative_analytics_model - type: workspace attributes: name: test_put_declarative_analytics_model + id: test_put_declarative_analytics_model + type: workspace headers: Accept: - application/json @@ -69,15 +65,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: test_put_declarative_analytics_model + id: test_put_declarative_analytics_model + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/test_put_declarative_analytics_model headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '276' Content-Type: @@ -90,28 +92,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: test_put_declarative_analytics_model - id: test_put_declarative_analytics_model - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test_put_declarative_analytics_model + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -122,40 +117,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -164,6 +128,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -172,6 +137,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -180,6 +146,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -197,6 +164,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -204,6 +172,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -221,6 +190,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -253,6 +223,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -267,6 +238,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -275,6 +247,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -302,6 +275,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -310,6 +284,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -318,6 +293,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -326,9 +302,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -361,6 +339,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -369,6 +348,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -377,6 +357,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -394,6 +375,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -401,6 +383,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -418,6 +401,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -428,6 +412,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -438,6 +423,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -448,6 +434,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -469,6 +456,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -477,6 +465,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -485,6 +474,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -523,356 +513,412 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/test_put_declarative_analytics_model/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines + title: Customers + - aggregatedFacts: [] attributes: - - id: order_id + - description: Order id + id: order_id + isNullable: true labels: [] sourceColumn: order_id - title: Order id sourceColumnDataType: STRING - description: Order id tags: - Order lines - - id: order_line_id + title: Order id + - description: Order line id + id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id - title: Order line id sourceColumnDataType: STRING - description: Order line id tags: - Order lines - - id: order_status + title: Order line id + - description: Order status + id: order_status + isNullable: true labels: [] sourceColumn: order_status - title: Order status sourceColumnDataType: STRING - description: Order status tags: - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines facts: - - id: price + - description: Price + id: price + isNullable: true sourceColumn: price - title: Price sourceColumnDataType: NUMERIC - description: Price tags: - Order lines - - id: quantity + title: Price + - description: Quantity + id: quantity + isNullable: true sourceColumn: quantity - title: Quantity sourceColumnDataType: NUMERIC - description: Quantity tags: - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region - dataType: STRING name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -882,10 +928,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -895,15 +940,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/test_put_declarative_analytics_model/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -912,21 +956,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/test_put_declarative_analytics_model/analyticsModel body: null headers: Accept: @@ -937,17 +981,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/test_put_declarative_analytics_model/analyticsModel response: - status: - code: 200 - message: OK + body: + string: + analytics: + analyticalDashboardExtensions: [] + analyticalDashboards: [] + attributeHierarchies: [] + dashboardPlugins: [] + exportDefinitions: [] + filterContexts: [] + memoryItems: [] + metrics: [] + parameters: [] + visualizationObjects: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '223' + - '239' Content-Type: - application/json DATE: *id001 @@ -958,42 +1012,33 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - analytics: - analyticalDashboardExtensions: [] - analyticalDashboards: [] - attributeHierarchies: [] - dashboardPlugins: [] - exportDefinitions: [] - filterContexts: [] - memoryItems: [] - metrics: [] - visualizationObjects: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/test_put_declarative_analytics_model/analyticsModel body: analytics: - analyticalDashboards: [] analyticalDashboardExtensions: [] + analyticalDashboards: [] attributeHierarchies: [] dashboardPlugins: [] + exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - exportDefinitions: [] - memoryItems: [] headers: Accept-Encoding: - br, gzip, deflate @@ -1003,15 +1048,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/test_put_declarative_analytics_model/analyticsModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -1020,21 +1064,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/test_put_declarative_analytics_model/analyticsModel body: null headers: Accept: @@ -1045,17 +1089,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/test_put_declarative_analytics_model/analyticsModel response: - status: - code: 200 - message: OK + body: + string: + analytics: + analyticalDashboardExtensions: [] + analyticalDashboards: [] + attributeHierarchies: [] + dashboardPlugins: [] + exportDefinitions: [] + filterContexts: [] + memoryItems: [] + metrics: [] + parameters: [] + visualizationObjects: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '223' + - '239' Content-Type: - application/json DATE: *id001 @@ -1066,31 +1120,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - analytics: - analyticalDashboardExtensions: [] - analyticalDashboards: [] - attributeHierarchies: [] - dashboardPlugins: [] - exportDefinitions: [] - filterContexts: [] - memoryItems: [] - metrics: [] - visualizationObjects: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -1122,9 +1166,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -1136,6 +1178,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -1146,54 +1189,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -1234,200 +1277,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -1449,9 +1493,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -1507,9 +1551,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -1564,6 +1608,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1667,9 +1712,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1892,9 +1937,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2457,207 +2502,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -2668,92 +2780,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -2765,51 +2832,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2819,10 +2890,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2834,12 +2905,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2853,9 +2923,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2867,18 +2938,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2887,12 +2958,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2908,15 +2981,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2925,15 +2997,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml index d73556f1b..c7811e658 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test_put_declarative_ldm?include=workspaces body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/test_put_declarative_ldm?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 95eb83a60fa737638cf1a6fa6a6a10c2 headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -32,32 +33,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 7fb9c334f1b07bd75cbb9643ab6ced93 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: test_put_declarative_ldm - type: workspace attributes: name: test_put_declarative_ldm + id: test_put_declarative_ldm + type: workspace headers: Accept: - application/json @@ -69,15 +65,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: test_put_declarative_ldm + id: test_put_declarative_ldm + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/test_put_declarative_ldm headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '240' Content-Type: @@ -90,28 +92,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: test_put_declarative_ldm - id: test_put_declarative_ldm - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test_put_declarative_ldm + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -122,40 +117,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -164,6 +128,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -172,6 +137,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -180,6 +146,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -197,6 +164,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -204,6 +172,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -221,6 +190,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -253,6 +223,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -267,6 +238,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -275,6 +247,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -302,6 +275,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -310,6 +284,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -318,6 +293,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -326,9 +302,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -361,6 +339,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -369,6 +348,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -377,6 +357,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -394,6 +375,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -401,6 +383,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -418,6 +401,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -428,6 +412,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -438,6 +423,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -448,6 +434,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -469,6 +456,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -477,6 +465,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -485,6 +474,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -523,356 +513,412 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/test_put_declarative_ldm/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines + title: Customers + - aggregatedFacts: [] attributes: - - id: order_id + - description: Order id + id: order_id + isNullable: true labels: [] sourceColumn: order_id - title: Order id sourceColumnDataType: STRING - description: Order id tags: - Order lines - - id: order_line_id + title: Order id + - description: Order line id + id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id - title: Order line id sourceColumnDataType: STRING - description: Order line id tags: - Order lines - - id: order_status + title: Order line id + - description: Order status + id: order_status + isNullable: true labels: [] sourceColumn: order_status - title: Order status sourceColumnDataType: STRING - description: Order status tags: - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines facts: - - id: price + - description: Price + id: price + isNullable: true sourceColumn: price - title: Price sourceColumnDataType: NUMERIC - description: Price tags: - Order lines - - id: quantity + title: Price + - description: Quantity + id: quantity + isNullable: true sourceColumn: quantity - title: Quantity sourceColumnDataType: NUMERIC - description: Quantity tags: - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region - dataType: STRING name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -882,10 +928,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -895,15 +940,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/test_put_declarative_ldm/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -912,21 +956,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/test_put_declarative_ldm/logicalModel body: null headers: Accept: @@ -937,40 +981,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/test_put_declarative_ldm/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -979,6 +992,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -987,6 +1001,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -995,6 +1010,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1012,6 +1028,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1019,6 +1036,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1036,6 +1054,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1068,6 +1087,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1082,6 +1102,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1090,6 +1111,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1117,6 +1139,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1125,6 +1148,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1133,6 +1157,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1141,9 +1166,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1176,6 +1203,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1184,6 +1212,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1192,6 +1221,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1209,6 +1239,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1216,6 +1247,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1233,6 +1265,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1243,6 +1276,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1253,6 +1287,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1263,6 +1298,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1278,6 +1314,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1286,6 +1323,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1294,6 +1332,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1332,9 +1371,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1164' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -1366,9 +1434,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -1380,6 +1446,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -1390,54 +1457,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -1478,200 +1545,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -1693,9 +1761,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -1751,9 +1819,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -1808,6 +1876,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1911,9 +1980,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2136,9 +2205,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2701,207 +2770,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -2912,92 +3048,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -3009,51 +3100,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -3063,10 +3158,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -3078,12 +3173,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -3097,9 +3191,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -3111,18 +3206,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -3131,12 +3226,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -3152,15 +3249,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3169,15 +3265,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml index c7fc1ce6c..9fafd4c1b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,48 +25,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -144,7 +109,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -156,145 +121,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -306,7 +271,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -316,7 +281,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -329,19 +294,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -349,15 +314,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -367,7 +332,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -376,7 +341,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -386,7 +351,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -396,7 +361,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -406,7 +371,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -415,7 +380,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -424,7 +389,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -434,7 +399,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -444,7 +409,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -454,7 +419,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -464,7 +429,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -474,7 +439,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -484,7 +449,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -494,7 +459,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -505,7 +470,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -515,7 +480,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -525,7 +490,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -535,7 +500,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -544,7 +509,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -553,7 +518,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -562,7 +527,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -571,7 +536,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -580,7 +545,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -589,12 +554,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -654,7 +620,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -702,9 +668,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -730,7 +696,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -809,7 +775,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -868,7 +834,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -925,7 +891,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -943,9 +909,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -978,7 +944,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1053,7 +1019,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1110,7 +1076,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1209,7 +1175,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1265,7 +1231,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1304,7 +1270,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1360,7 +1326,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1428,7 +1394,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1485,7 +1451,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1542,61 +1508,45 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user id: top_10_products title: Top 10 Products - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json - DATE: *id001 + - application/json + DATE: &id001 + - PLACEHOLDER Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -1605,44 +1555,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -1653,38 +1619,20 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '564' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -1693,9 +1641,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1704,8 +1650,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel + response: body: string: analytics: @@ -1717,48 +1680,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1801,7 +1764,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1813,145 +1776,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1963,7 +1926,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1973,7 +1936,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1986,19 +1949,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -2006,15 +1969,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -2024,7 +1987,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2033,7 +1996,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2043,7 +2006,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2053,7 +2016,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2063,7 +2026,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2072,7 +2035,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2081,7 +2044,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2091,7 +2054,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2101,7 +2064,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2111,7 +2074,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2121,7 +2084,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2131,7 +2094,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2141,7 +2104,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2151,7 +2114,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2162,7 +2125,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2172,7 +2135,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2182,7 +2145,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2192,7 +2155,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2201,7 +2164,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2210,7 +2173,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2219,7 +2182,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2228,7 +2191,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2237,7 +2200,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2246,12 +2209,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2311,7 +2275,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2359,9 +2323,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2387,7 +2351,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2466,7 +2430,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2525,7 +2489,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2582,7 +2546,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2600,9 +2564,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2635,7 +2599,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2710,7 +2674,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2767,7 +2731,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2866,7 +2830,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2922,7 +2886,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2961,7 +2925,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3017,7 +2981,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3085,7 +3049,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3142,7 +3106,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3199,61 +3163,44 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user id: top_10_products title: Top 10 Products - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -3262,44 +3209,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -3310,9 +3273,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_ldm.yaml index 22512d62a..0e566d9cc 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_ldm.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -57,6 +22,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -65,6 +31,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -73,6 +40,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -90,6 +58,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -97,6 +66,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -114,6 +84,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -146,6 +117,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -160,6 +132,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -168,6 +141,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -195,6 +169,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -203,6 +178,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -211,6 +187,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -219,9 +196,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -254,6 +233,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -262,6 +242,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -270,6 +251,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -287,6 +269,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -294,6 +277,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -311,6 +295,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -321,6 +306,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -331,6 +317,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -341,6 +328,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -362,6 +350,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -370,6 +359,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -378,6 +368,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -416,55 +407,39 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '0' + - '1196' Content-Type: - - application/vnd.gooddata.api+json - DATE: *id001 + - application/json + DATE: &id001 + - PLACEHOLDER Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -473,44 +448,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -521,38 +512,20 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '564' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -561,9 +534,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -572,8 +543,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel + response: body: string: ldm: @@ -582,6 +570,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -590,6 +579,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -598,6 +588,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -615,6 +606,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -622,6 +614,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -639,6 +632,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -671,6 +665,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -685,6 +680,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -693,6 +689,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -720,6 +717,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -728,6 +726,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -736,6 +735,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -744,9 +744,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -779,6 +781,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -787,6 +790,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -795,6 +799,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -812,6 +817,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -819,6 +825,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -836,6 +843,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -846,6 +854,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -856,6 +865,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -866,6 +876,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -887,6 +898,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -895,6 +907,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -903,6 +916,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -941,55 +955,38 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br Content-Length: - - '0' + - '1196' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -998,44 +995,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -1046,9 +1059,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml index 804c954ad..61ad3b6a7 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -57,6 +22,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -65,6 +31,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -73,6 +40,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -90,6 +58,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -97,6 +66,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -114,6 +84,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -146,6 +117,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -160,6 +132,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -168,6 +141,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -195,6 +169,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -203,6 +178,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -211,6 +187,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -219,9 +196,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -254,6 +233,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -262,6 +242,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -270,6 +251,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -287,6 +269,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -294,6 +277,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -311,6 +295,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -321,6 +306,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -331,6 +317,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -341,6 +328,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -362,6 +350,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -370,6 +359,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -378,6 +368,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -416,216 +407,314 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers + title: Customers workspaceDataFilterReferences: - filterColumn: wdf__region filterColumnDataType: STRING filterId: id: wdf__region type: workspaceDataFilter - - grain: + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -636,148 +725,107 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT + tags: + - Order lines title: Order lines - description: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region + type: workspaceDataFilter + - aggregatedFacts: [] attributes: - - id: order_id + - description: Product id + id: product_id + isNullable: false labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: product_id - title: Product id - sourceColumnDataType: INT - description: Product id + sourceColumn: product_id + sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -787,10 +835,9 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -800,15 +847,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -817,21 +863,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -842,40 +888,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -884,6 +899,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -892,6 +908,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -900,6 +917,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -917,6 +935,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -924,6 +943,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -941,6 +961,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -973,6 +994,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -987,6 +1009,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -995,6 +1018,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1022,6 +1046,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1030,6 +1055,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1038,6 +1064,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1046,9 +1073,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1087,6 +1116,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1095,6 +1125,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1103,6 +1134,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1120,6 +1152,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1127,6 +1160,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1144,6 +1178,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1154,6 +1189,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1164,6 +1200,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1174,6 +1211,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1195,6 +1233,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1203,6 +1242,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1211,6 +1251,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1249,30 +1290,13 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1196' Content-Type: - application/json DATE: *id001 @@ -1283,9 +1307,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1294,22 +1316,40 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 + response: body: string: data: - attributes: - title: Campaign channel id - description: Campaign channel id - tags: - - Campaign channels areRelationsValid: true + description: Campaign channel id + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id meta: origin: originId: demo @@ -1325,16 +1365,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Campaign channels areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category meta: origin: originId: demo @@ -1350,16 +1391,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign id - description: Campaign id - tags: - - Campaigns areRelationsValid: true + description: Campaign id + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id meta: origin: originId: demo @@ -1375,16 +1417,17 @@ interactions: type: label type: attribute - attributes: - title: Campaign name - description: Campaign name - tags: - - Campaigns areRelationsValid: true + description: Campaign name + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name meta: origin: originId: demo @@ -1400,16 +1443,17 @@ interactions: type: label type: attribute - attributes: - title: Customer id - description: Customer id - tags: - - Customers areRelationsValid: true + description: Customer id + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id meta: origin: originId: demo @@ -1425,16 +1469,17 @@ interactions: type: label type: attribute - attributes: - title: Customer name - description: Customer name - tags: - - Customers areRelationsValid: true + description: Customer name + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name meta: origin: originId: demo @@ -1450,15 +1495,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Date + areRelationsValid: true description: Date + granularity: DAY tags: - Date - granularity: DAY - areRelationsValid: true + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day meta: origin: originId: demo @@ -1474,15 +1519,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Month/Year + areRelationsValid: true description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH - areRelationsValid: true + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month meta: origin: originId: demo @@ -1498,15 +1543,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Quarter/Year + areRelationsValid: true description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER - areRelationsValid: true + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter meta: origin: originId: demo @@ -1522,15 +1567,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Week/Year + areRelationsValid: true description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK - areRelationsValid: true + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week meta: origin: originId: demo @@ -1546,15 +1591,15 @@ interactions: type: label type: attribute - attributes: - title: Date - Year + areRelationsValid: true description: Year + granularity: YEAR tags: - Date - granularity: YEAR - areRelationsValid: true + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year meta: origin: originId: demo @@ -1570,16 +1615,17 @@ interactions: type: label type: attribute - attributes: - title: Order id - description: Order id - tags: - - Order lines areRelationsValid: true + description: Order id + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id meta: origin: originId: demo @@ -1595,16 +1641,17 @@ interactions: type: label type: attribute - attributes: - title: Order line id - description: Order line id - tags: - - Order lines areRelationsValid: true + description: Order line id + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id meta: origin: originId: demo @@ -1620,16 +1667,17 @@ interactions: type: label type: attribute - attributes: - title: Order status - description: Order status - tags: - - Order lines areRelationsValid: true + description: Order status + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status meta: origin: originId: demo @@ -1645,16 +1693,17 @@ interactions: type: label type: attribute - attributes: - title: Product id - description: Product id - tags: - - Products areRelationsValid: true + description: Product id + isNullable: false sourceColumn: product_id sourceColumnDataType: INT - id: product_id + tags: + - Products + title: Product id + id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id meta: origin: originId: demo @@ -1670,16 +1719,17 @@ interactions: type: label type: attribute - attributes: - title: Product name - description: Product name - tags: - - Products areRelationsValid: true + description: Product name + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name meta: origin: originId: demo @@ -1695,16 +1745,17 @@ interactions: type: label type: attribute - attributes: - title: Category - description: Category - tags: - - Products areRelationsValid: true + description: Category + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category meta: origin: originId: demo @@ -1720,16 +1771,17 @@ interactions: type: label type: attribute - attributes: - title: Region - description: Region - tags: - - Customers areRelationsValid: true + description: Region + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region meta: origin: originId: demo @@ -1745,29 +1797,30 @@ interactions: type: label type: attribute - attributes: - title: State - description: State - tags: - - Customers areRelationsValid: true + description: State + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state meta: origin: originId: demo originType: NATIVE relationships: - defaultView: - data: - id: state - type: label dataset: data: id: customers type: dataset + defaultView: + data: + id: state + type: label labels: data: - id: state @@ -1776,16 +1829,17 @@ interactions: type: label type: attribute - attributes: - title: Type - description: Type - tags: - - Campaign channels areRelationsValid: true + description: Type + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type meta: origin: originId: demo @@ -1802,139 +1856,143 @@ interactions: type: attribute included: - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true primary: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name valueType: TEXT id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_name type: label - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status valueType: TEXT id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_status type: label - attributes: - title: Order lines + dataSourceTableId: demo-test-ds:order_lines + dataSourceTablePath: + - demo + - order_lines description: Order lines - tags: - - Order lines grain: - id: order_line_id type: attribute referenceProperties: - identifier: - id: campaigns + id: customers type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: campaign_id + - column: customer_id dataType: INT + isNullable: true + nullValue: null target: - id: campaign_id + id: customer_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: customers + id: products type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: customer_id + - column: product_id dataType: INT + isNullable: true + nullValue: null target: - id: customer_id + id: product_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null + - identifier: + id: campaigns + type: dataset + multivalue: false sourceColumnDataTypes: null + sourceColumns: null + sources: + - column: campaign_id + dataType: INT + isNullable: true + nullValue: null + target: + id: campaign_id + type: attribute - identifier: id: date type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: date dataType: DATE + isNullable: true + nullValue: null target: id: date type: date - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - dataType: INT - target: - id: product_id - type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:order_lines - dataSourceTablePath: - - demo - - order_lines + tags: + - Order lines + title: Order lines + type: NORMAL workspaceDataFilterColumns: - - name: wdf__region - dataType: STRING - - name: wdf__state - dataType: STRING + - dataType: STRING + name: wdf__state + - dataType: STRING + name: wdf__region workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region + - filterColumn: wdf__state filterColumnDataType: STRING - - filterId: + filterId: id: wdf__state type: workspaceDataFilter - filterColumn: wdf__state - filterColumnDataType: STRING - type: NORMAL id: order_lines links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/order_lines + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/order_lines type: dataset - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true primary: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name valueType: TEXT id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_name type: label - attributes: - title: Campaign channels + dataSourceTableId: demo-test-ds:campaign_channels + dataSourceTablePath: + - demo + - campaign_channels description: Campaign channels - tags: - - Campaign channels grain: - id: campaign_channel_id type: attribute @@ -1943,343 +2001,338 @@ interactions: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:campaign_channels - dataSourceTablePath: - - demo - - campaign_channels + tags: + - Campaign channels + title: Campaign channels type: NORMAL id: campaign_channels links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels type: dataset - attributes: - title: Date - Month/Year description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month type: label - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.quarter type: label - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false primary: true sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id valueType: TEXT id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channel_id type: label - attributes: - title: Date - Date description: Date - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.day type: label - attributes: - title: Campaigns - description: Campaigns - tags: - - Campaigns - grain: - - id: campaign_id - type: attribute dataSourceTableId: demo-test-ds:campaigns dataSourceTablePath: - demo - campaigns + description: Campaigns + grain: + - id: campaign_id + type: attribute + tags: + - Campaigns + title: Campaigns type: NORMAL id: campaigns links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaigns + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaigns type: dataset - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true primary: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id valueType: TEXT id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_id type: label - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true primary: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name valueType: TEXT id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_name type: label - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type valueType: TEXT id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/type type: label - attributes: - title: Customers - description: Customers - tags: - - Customers - grain: - - id: customer_id - type: attribute dataSourceTableId: demo-test-ds:customers dataSourceTablePath: - demo - customers + description: Customers + grain: + - id: customer_id + type: attribute + tags: + - Customers + title: Customers + type: NORMAL workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region - filterColumnDataType: STRING - type: NORMAL id: customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/customers type: dataset - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true primary: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region valueType: TEXT id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/region type: label - attributes: - title: Category description: Category - tags: - - Products + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category valueType: TEXT id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/products.category type: label - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.week type: label - attributes: - title: Location description: Location - tags: - - Customers + isNullable: true primary: false sourceColumn: geo__state__location sourceColumnDataType: STRING + tags: + - Customers + title: Location valueType: GEO id: geo__state__location links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/geo__state__location + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/geo__state__location type: label - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false primary: true sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id valueType: TEXT id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/product_id type: label - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false primary: true sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id valueType: TEXT id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/order_line_id type: label - attributes: - title: Products - description: Products - tags: - - Products - grain: - - id: product_id - type: attribute dataSourceTableId: demo-test-ds:products dataSourceTablePath: - demo - products + description: Products + grain: + - id: product_id + type: attribute + tags: + - Products + title: Products type: NORMAL id: products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/products + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/products type: dataset - attributes: - title: Date description: '' tags: - Date + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date type: dataset - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true primary: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category valueType: TEXT id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_channels.category type: label - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false primary: true sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id valueType: TEXT id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/customer_id type: label - attributes: - title: Date - Year description: Year - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.year type: label - attributes: - title: State description: State - tags: - - Customers + isNullable: true primary: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State valueType: TEXT id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/state type: label - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false primary: true sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id valueType: TEXT id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/campaign_id type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes?include=labels%2Cdatasets&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1888' Content-Type: - application/json DATE: *id001 @@ -2290,9 +2343,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -2301,16 +2352,35 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 + response: body: string: data: - attributes: - title: Campaign channels + areRelationsValid: true + dataSourceTableId: demo-test-ds:campaign_channels + dataSourceTablePath: + - demo + - campaign_channels description: Campaign channels - tags: - - Campaign channels grain: - id: campaign_channel_id type: attribute @@ -2319,25 +2389,23 @@ interactions: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:campaign_channels - dataSourceTablePath: - - demo - - campaign_channels - areRelationsValid: true + tags: + - Campaign channels + title: Campaign channels type: NORMAL id: campaign_channels links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels meta: origin: originId: demo @@ -2359,35 +2427,35 @@ interactions: type: fact type: dataset - attributes: - title: Campaign channels per category + areRelationsValid: true description: Campaign channels per categories - tags: - - Campaign channels per category + precedence: 1 referenceProperties: - identifier: id: campaign_channels type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_channel_id dataType: STRING + isNullable: true + nullValue: null target: id: campaign_channel_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null sql: + dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category - dataSourceId: demo-test-ds - precedence: 1 - areRelationsValid: true + tags: + - Campaign channels per category + title: Campaign channels per category type: NORMAL id: campaign_channels_per_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaign_channels_per_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaign_channels_per_category meta: origin: originId: demo @@ -2396,25 +2464,25 @@ interactions: aggregatedFacts: data: - id: budget_agg - type: aggregatedFact - type: dataset - - attributes: - title: Campaigns - description: Campaigns - tags: - - Campaigns - grain: - - id: campaign_id - type: attribute + type: aggregatedFact + type: dataset + - attributes: + areRelationsValid: true dataSourceTableId: demo-test-ds:campaigns dataSourceTablePath: - demo - campaigns - areRelationsValid: true + description: Campaigns + grain: + - id: campaign_id + type: attribute + tags: + - Campaigns + title: Campaigns type: NORMAL id: campaigns links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/campaigns + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/campaigns meta: origin: originId: demo @@ -2428,28 +2496,28 @@ interactions: type: attribute type: dataset - attributes: - title: Customers - description: Customers - tags: - - Customers - grain: - - id: customer_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:customers dataSourceTablePath: - demo - customers - areRelationsValid: true + description: Customers + grain: + - id: customer_id + type: attribute + tags: + - Customers + title: Customers + type: NORMAL workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region - filterColumnDataType: STRING - type: NORMAL id: customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/customers meta: origin: originId: demo @@ -2467,15 +2535,15 @@ interactions: type: attribute type: dataset - attributes: - title: Date + areRelationsValid: true description: '' tags: - Date - areRelationsValid: true + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date meta: origin: originId: demo @@ -2495,95 +2563,95 @@ interactions: type: attribute type: dataset - attributes: - title: Order lines + areRelationsValid: true + dataSourceTableId: demo-test-ds:order_lines + dataSourceTablePath: + - demo + - order_lines description: Order lines - tags: - - Order lines grain: - id: order_line_id type: attribute referenceProperties: - identifier: - id: date + id: customers type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: date - dataType: DATE - target: - id: date - type: date - isNullable: null + - column: customer_id + dataType: INT + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null + target: + id: customer_id + type: attribute - identifier: id: products type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: product_id dataType: INT + isNullable: true + nullValue: null target: id: product_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: id: campaigns type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - column: campaign_id dataType: INT + isNullable: true + nullValue: null target: id: campaign_id type: attribute - isNullable: null - nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - identifier: - id: customers + id: date type: dataset multivalue: false + sourceColumnDataTypes: null + sourceColumns: null sources: - - column: customer_id - dataType: INT - target: - id: customer_id - type: attribute - isNullable: null + - column: date + dataType: DATE + isNullable: true nullValue: null - sourceColumns: null - sourceColumnDataTypes: null - dataSourceTableId: demo-test-ds:order_lines - dataSourceTablePath: - - demo - - order_lines - areRelationsValid: true + target: + id: date + type: date + tags: + - Order lines + title: Order lines + type: NORMAL workspaceDataFilterColumns: - - name: wdf__region - dataType: STRING - - name: wdf__state - dataType: STRING + - dataType: STRING + name: wdf__state + - dataType: STRING + name: wdf__region workspaceDataFilterReferences: - - filterId: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: id: wdf__region type: workspaceDataFilter - filterColumn: wdf__region + - filterColumn: wdf__state filterColumnDataType: STRING - - filterId: + filterId: id: wdf__state type: workspaceDataFilter - filterColumn: wdf__state - filterColumnDataType: STRING - type: NORMAL id: order_lines links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/order_lines + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/order_lines meta: origin: originId: demo @@ -2605,22 +2673,22 @@ interactions: type: fact type: dataset - attributes: - title: Products - description: Products - tags: - - Products - grain: - - id: product_id - type: attribute + areRelationsValid: true dataSourceTableId: demo-test-ds:products dataSourceTablePath: - demo - products - areRelationsValid: true + description: Products + grain: + - id: product_id + type: attribute + tags: + - Products + title: Products type: NORMAL id: products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/products + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/products meta: origin: originId: demo @@ -2637,302 +2705,304 @@ interactions: type: dataset included: - attributes: - title: Product id description: Product id - tags: - - Products + isNullable: false sourceColumn: product_id sourceColumnDataType: INT + tags: + - Products + title: Product id id: product_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_id type: attribute - attributes: - title: Budget description: Budget - tags: - - Campaign channels + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget id: budget links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/budget + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/budget type: fact - attributes: - title: Date - Year description: Year + granularity: YEAR tags: - Date - granularity: YEAR + title: Date - Year id: date.year links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.year + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.year type: attribute - attributes: - title: Product name description: Product name - tags: - - Products + isNullable: true sourceColumn: product_name sourceColumnDataType: STRING + tags: + - Products + title: Product name id: product_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/product_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/product_name type: attribute - attributes: - title: Date - Month/Year description: Month and Year (12/2020) + granularity: MONTH tags: - Date - granularity: MONTH + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.month type: attribute - attributes: - title: Category description: Category - tags: - - Products + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Products + title: Category id: products.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/products.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/products.category type: attribute - attributes: - title: Date - Quarter/Year description: Quarter and Year (Q1/2020) + granularity: QUARTER tags: - Date - granularity: QUARTER + title: Date - Quarter/Year id: date.quarter links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.quarter + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.quarter type: attribute - attributes: - title: Category description: Category - tags: - - Campaign channels + isNullable: true sourceColumn: category sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category id: campaign_channels.category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channels.category + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channels.category type: attribute - attributes: - title: State description: State - tags: - - Customers + isNullable: true sourceColumn: state sourceColumnDataType: STRING + tags: + - Customers + title: State id: state links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/state + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/state type: attribute - attributes: - title: Date - Week/Year description: Week and Year (W52/2020) + granularity: WEEK tags: - Date - granularity: WEEK + title: Date - Week/Year id: date.week links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.week + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.week type: attribute - attributes: - title: Order id description: Order id - tags: - - Order lines + isNullable: true sourceColumn: order_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order id id: order_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_id type: attribute - attributes: - title: Campaign name description: Campaign name - tags: - - Campaigns + isNullable: true sourceColumn: campaign_name sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name id: campaign_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_name type: attribute - attributes: - title: Price description: Price - tags: - - Order lines + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price id: price links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/price + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/price type: fact - attributes: description: Budget Agg - tags: - - Campaign channels per category + operation: SUM sourceColumn: budget sourceColumnDataType: INT - operation: SUM + tags: + - Campaign channels per category id: budget_agg links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg + self: http://localhost:3000/api/v1/entities/workspaces/demo/aggregatedFacts/budget_agg type: aggregatedFact - attributes: - title: Date - Date description: Date + granularity: DAY tags: - Date - granularity: DAY + title: Date - Date id: date.day links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/date.day + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/date.day type: attribute - attributes: - title: Region description: Region - tags: - - Customers + isNullable: true sourceColumn: region sourceColumnDataType: STRING + tags: + - Customers + title: Region id: region links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/region + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/region type: attribute - attributes: - title: Campaign channel id description: Campaign channel id - tags: - - Campaign channels + isNullable: false sourceColumn: campaign_channel_id sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id id: campaign_channel_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_channel_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_channel_id type: attribute - attributes: - title: Customer id description: Customer id - tags: - - Customers + isNullable: false sourceColumn: customer_id sourceColumnDataType: INT + tags: + - Customers + title: Customer id id: customer_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_id type: attribute - attributes: - title: Quantity description: Quantity - tags: - - Order lines + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity id: quantity links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/quantity + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/quantity type: fact - attributes: - title: Campaign id description: Campaign id - tags: - - Campaigns + isNullable: false sourceColumn: campaign_id sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id id: campaign_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/campaign_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/campaign_id type: attribute - attributes: - title: Type description: Type - tags: - - Campaign channels + isNullable: true sourceColumn: type sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type id: type links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/type + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/type type: attribute - attributes: - title: Spend description: Spend - tags: - - Campaign channels + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend id: spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/facts/spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/facts/spend type: fact - attributes: - title: Order status description: Order status - tags: - - Order lines + isNullable: true sourceColumn: order_status sourceColumnDataType: STRING + tags: + - Order lines + title: Order status id: order_status links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_status + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_status type: attribute - attributes: - title: Customer name description: Customer name - tags: - - Customers + isNullable: true sourceColumn: customer_name sourceColumnDataType: STRING + tags: + - Customers + title: Customer name id: customer_name links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/customer_name + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/customer_name type: attribute - attributes: - title: Order line id description: Order line id - tags: - - Order lines + isNullable: false sourceColumn: order_line_id sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id id: order_line_id links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/attributes/order_line_id + self: http://localhost:3000/api/v1/entities/workspaces/demo/attributes/order_line_id type: attribute links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets?include=attributes%2Cfacts%2CaggregatedFacts&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1771' Content-Type: - application/json DATE: *id001 @@ -2943,9 +3013,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -2954,392 +3022,438 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + response: body: string: data: - attributes: - title: '# of Active Customers' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Orders' areRelationsValid: true content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Orders' id: amount_of_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Top Customers' areRelationsValid: true content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '# of Top Customers' id: amount_of_top_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_top_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '# of Valid Orders' - description: '' areRelationsValid: true content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + description: '' + title: '# of Valid Orders' id: amount_of_valid_orders links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_valid_orders meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Campaign Spend areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Campaign Spend id: campaign_spend links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/campaign_spend + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/campaign_spend meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Order Amount areRelationsValid: true content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Order Amount id: order_amount links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/order_amount + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/order_amount meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue' id: percent_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Customers' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_customers meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10% Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_percent_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue from Top 10 Products' areRelationsValid: true content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_from_top_10_products meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue in Category' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue in Category' id: percent_revenue_in_category links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_in_category meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: '% Revenue per Product' areRelationsValid: true content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: '% Revenue per Product' id: percent_revenue_per_product links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/percent_revenue_per_product meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue - description: '' areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + description: '' + title: Revenue id: revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Clothing) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Clothing) id: revenue-clothing links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-clothing + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-clothing meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Electronic) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Electronic) id: revenue-electronic links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-electronic + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-electronic meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Home) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Home) id: revenue-home links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-home + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-home meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue (Outdoor) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue (Outdoor) id: revenue-outdoor links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue-outdoor + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue-outdoor meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Customer areRelationsValid: true content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue per Dollar Spent areRelationsValid: true content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_dollar_spent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10 areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue / Top 10 id: revenue_top_10 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10 meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Revenue / Top 10% areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Revenue / Top 10% id: revenue_top_10_percent links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_top_10_percent meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Total Revenue id: total_revenue links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue meta: origin: originId: demo originType: NATIVE type: metric - attributes: - title: Total Revenue (No Filters) areRelationsValid: true content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:17 + createdAt: 2026-04-01 14:36 + title: Total Revenue (No Filters) id: total_revenue-no_filters links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/total_revenue-no_filters meta: origin: originId: demo originType: NATIVE type: metric links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1089' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -3371,9 +3485,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -3385,6 +3497,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -3395,54 +3508,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -3483,200 +3596,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -3698,9 +3812,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -3756,9 +3870,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -3813,6 +3927,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -3916,9 +4031,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -4141,9 +4256,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -4706,207 +4821,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -4917,92 +5099,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -5014,51 +5151,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -5068,10 +5209,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -5083,12 +5224,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -5102,9 +5242,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -5116,18 +5257,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -5136,12 +5277,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -5157,15 +5300,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -5174,15 +5316,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/export_definition_analytics_layout.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/export_definition_analytics_layout.yaml index b25ce0330..3198c9043 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/export_definition_analytics_layout.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/export_definition_analytics_layout.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,46 +25,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -148,143 +113,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -309,19 +274,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -329,15 +294,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -479,6 +444,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -582,9 +548,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -807,9 +773,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1372,11 +1338,42 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel body: analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -1384,54 +1381,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -1472,200 +1469,206 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset - insight: - identifier: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' - analyticalDashboardExtensions: [] attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 + exportDefinitions: + - id: export_definition_id + requestPayload: + fileName: abc + format: CSV + title: export_definition_title filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -1687,9 +1690,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -1744,9 +1747,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") @@ -1798,6 +1801,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1901,9 +1905,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2126,9 +2130,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -2691,13 +2695,6 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - exportDefinitions: - - id: export_definition_id - title: export_definition_title - requestPayload: - fileName: abc - format: CSV - memoryItems: [] headers: Accept-Encoding: - br, gzip, deflate @@ -2707,15 +2704,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2724,21 +2720,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -2749,40 +2745,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/analyticsModel?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -2794,46 +2759,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -2882,143 +2847,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -3048,19 +3013,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -3068,15 +3033,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -3218,6 +3183,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -3321,9 +3287,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -3546,9 +3512,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -4111,9 +4077,38 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -4145,9 +4140,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -4159,6 +4152,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -4169,54 +4163,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -4257,200 +4251,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -4472,9 +4467,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -4530,9 +4525,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -4587,6 +4582,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -4690,9 +4686,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -4915,9 +4911,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -5480,207 +5476,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -5691,92 +5754,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -5788,51 +5806,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -5842,10 +5864,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -5857,12 +5879,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -5876,9 +5897,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -5890,18 +5912,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -5910,12 +5932,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -5931,15 +5955,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -5948,15 +5971,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml index 85cbc0bd2..620b3b0d8 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml @@ -1,17 +1,14 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: - - label: order_status + - complementFilter: false + label: order_status values: - Canceled - Delivered - complementFilter: false + label: order_status validateBy: [] headers: Accept: @@ -24,15 +21,28 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: 61fa066fcd6f91f290b20d1a5b40fe1e + elements: + - primaryTitle: Canceled + title: Canceled + - primaryTitle: Delivered + title: Delivered + paging: + count: 2 + next: null + offset: 0 + total: 2 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '261' Content-Type: @@ -46,38 +56,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Canceled - primaryTitle: Canceled - - title: Delivered - primaryTitle: Delivered - paging: - total: 2 - count: 2 - offset: 0 - next: null - cacheId: aa29ce0b0acfc72b7b488152b1dc394c + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: [] + label: order_status validateBy: - id: revenue_top_10_percent type: metric @@ -92,15 +88,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: ed4f8a23336ebafeae1d06d38773b6c2 + elements: + - primaryTitle: Delivered + title: Delivered + paging: + count: 1 + next: null + offset: 0 + total: 1 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '214' Content-Type: @@ -113,36 +120,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Delivered - primaryTitle: Delivered - paging: - total: 1 - count: 1 - offset: 0 - next: null - cacheId: 3c7c819807baf97f6bc15e014b9139e8 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: [] + label: order_status validateBy: [] headers: Accept: @@ -155,15 +150,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: 3553df7b174c1c2db5a6be89ac429b9f + elements: + - primaryTitle: Canceled + title: Canceled + - primaryTitle: Delivered + title: Delivered + - primaryTitle: Returned + title: Returned + paging: + count: 3 + next: null + offset: 0 + total: 3 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: @@ -176,39 +186,22 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Canceled - primaryTitle: Canceled - - title: Delivered - primaryTitle: Delivered - - title: Returned - primaryTitle: Returned - paging: - total: 3 - count: 3 - offset: 0 - next: null - cacheId: 8fb034e5fd0dd18ae306dfacb1dd4f1f + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: - dateFilter: absoluteDateFilter: @@ -218,6 +211,7 @@ interactions: type: dataset from: '2150-07-01' to: '2150-07-16' + label: order_status validateBy: [] headers: Accept: @@ -230,15 +224,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: eac9cfc5cde5b4a14255e559523e215e + elements: [] + paging: + count: 0 + next: null + offset: 0 + total: 0 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '166' Content-Type: @@ -251,33 +254,22 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: [] - paging: - total: 0 - count: 0 - offset: 0 - next: null - cacheId: bae075546ebbe3012d270ac44be24d3d + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: - dateFilter: relativeDateFilter: @@ -288,6 +280,7 @@ interactions: from: 3600 granularity: DAY to: 3700 + label: order_status validateBy: [] headers: Accept: @@ -300,15 +293,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: 658bf33944da8e3628ed4247379f5b86 + elements: [] + paging: + count: 0 + next: null + offset: 0 + total: 0 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '166' Content-Type: @@ -321,39 +323,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: [] - paging: - total: 0 - count: 0 - offset: 0 - next: null - cacheId: 02c087ef137761b52b78cb53e865d9b2 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: - - label: order_status + - complementFilter: false + label: order_status values: - Canceled - Delivered - complementFilter: false + label: order_status validateBy: [] headers: Accept: @@ -366,15 +358,28 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: 61fa066fcd6f91f290b20d1a5b40fe1e + elements: + - primaryTitle: Canceled + title: Canceled + - primaryTitle: Delivered + title: Delivered + paging: + count: 2 + next: null + offset: 0 + total: 2 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '261' Content-Type: @@ -387,40 +392,26 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Canceled - primaryTitle: Canceled - - title: Delivered - primaryTitle: Delivered - paging: - total: 2 - count: 2 - offset: 0 - next: null - cacheId: aa29ce0b0acfc72b7b488152b1dc394c + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: [] - validateBy: [] + label: order_status patternFilter: Deli + validateBy: [] headers: Accept: - application/json @@ -432,15 +423,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: 352176af4858a0e4d392c18758a3eec3 + elements: + - primaryTitle: Delivered + title: Delivered + paging: + count: 1 + next: null + offset: 0 + total: 1 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '214' Content-Type: @@ -453,39 +455,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Delivered - primaryTitle: Delivered - paging: - total: 1 - count: 1 - offset: 0 - next: null - cacheId: aac53166877308a6883016dcb824971b + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status + complementFilter: true dependsOn: [] - validateBy: [] + label: order_status patternFilter: Deli - complementFilter: true + validateBy: [] headers: Accept: - application/json @@ -497,15 +487,28 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: a08f904867e8d8459eefadc86f094f38 + elements: + - primaryTitle: Canceled + title: Canceled + - primaryTitle: Returned + title: Returned + paging: + count: 2 + next: null + offset: 0 + total: 2 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '259' Content-Type: @@ -518,40 +521,26 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Canceled - primaryTitle: Canceled - - title: Returned - primaryTitle: Returned - paging: - total: 2 - count: 2 - offset: 0 - next: null - cacheId: efd977c2fe3f1e299ce49dd480cd6fc8 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements body: - label: order_status dependsOn: [] - validateBy: [] + label: order_status sortOrder: DESC + validateBy: [] headers: Accept: - application/json @@ -563,15 +552,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements response: - status: - code: 200 - message: OK + body: + string: + cacheId: c63d048131792776014bf3b9f9db5c1c + elements: + - primaryTitle: Returned + title: Returned + - primaryTitle: Delivered + title: Delivered + - primaryTitle: Canceled + title: Canceled + paging: + count: 3 + next: null + offset: 0 + total: 3 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '308' Content-Type: @@ -584,40 +588,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Returned - primaryTitle: Returned - - title: Delivered - primaryTitle: Delivered - - title: Canceled - primaryTitle: Canceled - paging: - total: 3 - count: 3 - offset: 0 - next: null - cacheId: 411ad9655331584b50df58a262a29cf4 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements?offset=1&limit=1 body: - label: order_status dependsOn: [] + label: order_status validateBy: [] headers: Accept: @@ -630,15 +618,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements?offset=1&limit=1 response: - status: - code: 200 - message: OK + body: + string: + cacheId: 3553df7b174c1c2db5a6be89ac429b9f + elements: + - primaryTitle: Delivered + title: Delivered + paging: + count: 1 + next: http://localhost:3000/api/v1/actions/workspaces/demo/execution/collectLabelElements?limit=1&offset=2 + offset: 1 + total: 3 + primaryLabel: + id: order_status + type: label headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '349' Content-Type: @@ -651,27 +650,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - primaryLabel: - id: order_status - type: label - elements: - - title: Delivered - primaryTitle: Delivered - paging: - total: 3 - count: 1 - offset: 1 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/collectLabelElements?limit=1&offset=2 - cacheId: 8fb034e5fd0dd18ae306dfacb1dd4f1f + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/ldm_store_load.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/ldm_store_load.yaml index cf5bd0dd6..c902e42fb 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/ldm_store_load.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/ldm_store_load.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: ldm: @@ -57,6 +22,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -65,6 +31,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -73,6 +40,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -90,6 +58,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -97,6 +66,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -114,6 +84,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -146,6 +117,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -160,6 +132,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -168,6 +141,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -195,6 +169,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -203,6 +178,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -211,6 +187,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -219,9 +196,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -254,6 +233,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -262,6 +242,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -270,6 +251,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -287,6 +269,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -294,6 +277,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -311,6 +295,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -321,6 +306,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -331,6 +317,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -341,6 +328,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -362,6 +350,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -370,6 +359,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -378,6 +368,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -416,33 +407,17 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/logicalModel - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '1196' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -450,9 +425,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -461,8 +434,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/logicalModel + response: body: string: ldm: @@ -471,6 +461,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -479,6 +470,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -487,6 +479,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -504,6 +497,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -511,6 +505,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -528,6 +523,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -560,6 +556,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -574,6 +571,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -582,6 +580,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -609,6 +608,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -617,6 +617,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -625,6 +626,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -633,9 +635,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -668,6 +672,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -676,6 +681,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -684,6 +690,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -701,6 +708,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -708,6 +716,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -725,6 +734,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -735,6 +745,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -745,6 +756,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -755,6 +767,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -776,6 +789,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -784,6 +798,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -792,6 +807,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -830,3 +846,35 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1196' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml index 42cf7467c..fef083ba7 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/add_metadata_locale.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/clean body: locale: fr-FR headers: @@ -15,15 +12,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/clean response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -33,21 +29,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/retrieve body: locale: fr-FR headers: @@ -61,40 +57,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/xml - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: filterContext - - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/retrieve - body: - locale: fr-FR - headers: - Accept: - - application/xml - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br Content-Type: @@ -549,7 +492,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Vary: @@ -560,8 +503,28 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + locale: fr-FR + headers: + Accept: + - application/xml + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve + response: body: string: filterContext + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/set body: ' filterContextfilterContext. + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/clean body: locale: fr-FR headers: @@ -2038,15 +2027,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/clean response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2055,15 +2043,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml index 98d6c66e0..3bf13a9ea 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/clean_metadata_locale.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/clean body: locale: fr-FR headers: @@ -15,10 +12,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/clean response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -30,7 +28,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -38,12 +39,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: POST - uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve body: locale: fr-FR headers: @@ -57,33 +57,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Content-Length: - - '40991' - Content-Type: - - application/xml - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-Xss-Protection: - - '0' body: string: CategoryCategoryCampaign - channelsTypeTypeCampaign channelsCampaign - idCampaign - idCampaignsCampaign idCampaign idCampaignsCampaign nameCampaign nameCampaignsCustomer nameCustomer nameCustomersRegionRegionCustomersDate + - DateDateDateDate + - Month/YearMonth + and Year (12/2020)DateDate + - Quarter/YearQuarter + and Year (Q1/2020)DateDate + - Week/YearWeek + and Year (W52/2020)DateDate + - YearYearDateOrder idOrder idOrder @@ -183,24 +168,15 @@ interactions: id="attribute.products.category">CategoryCategoryProductsDate - - DateDateDateDate - - Week/YearWeek - and Year (W52/2020)DateDate - - Month/YearMonth - and Year (12/2020)DateDate - - Quarter/YearQuarter - and Year (Q1/2020)DateDate - - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign channelsCampaign channelsCampaign @@ -248,9 +224,6 @@ interactions: id="label.campaign_channels.category.title">CategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign idCampaign idCampaignsCustomer nameCustomer nameCustomersRegionRegionCustomersStateStateCustomersDate + - DateDateDateDate + - Month/YearMonth + and Year (12/2020)DateDate + - Quarter/YearQuarter + and Year (Q1/2020)DateDate + - Week/YearWeek + and Year (W52/2020)DateDate + - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate - - DateDateDateDate - - Week/YearWeek - and Year (W52/2020)DateDate - - Month/YearMonth - and Year (12/2020)DateDate - - Quarter/YearQuarter - and Year (Q1/2020)DateDate - - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels# of Active Customers# of OrdersfilterContext - - request: - method: POST - uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve - body: - locale: fr-FR - headers: - Accept: - - application/xml - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Content-Length: - - '40991' + Content-Encoding: + - br Content-Type: - application/xml DATE: *id001 @@ -535,7 +491,12 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -543,7 +504,27 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + locale: fr-FR + headers: + Accept: + - application/xml + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve + response: body: string: CategoryCategoryCampaign - channelsTypeTypeCampaign channelsCampaign - idCampaign - idCampaignsCampaign idCampaign idCampaignsCampaign nameCampaign nameCampaignsCustomer nameCustomer nameCustomersRegionRegionCustomersDate + - DateDateDateDate + - Month/YearMonth + and Year (12/2020)DateDate + - Quarter/YearQuarter + and Year (Q1/2020)DateDate + - Week/YearWeek + and Year (W52/2020)DateDate + - YearYearDateOrder idOrder idOrder @@ -643,24 +633,15 @@ interactions: id="attribute.products.category">CategoryCategoryProductsDate - - DateDateDateDate - - Week/YearWeek - and Year (W52/2020)DateDate - - Month/YearMonth - and Year (12/2020)DateDate - - Quarter/YearQuarter - and Year (Q1/2020)DateDate - - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign channelsCampaign channelsCampaign @@ -708,9 +689,6 @@ interactions: id="label.campaign_channels.category.title">CategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign idCampaign idCampaignsCustomer nameCustomer nameCustomersRegionRegionCustomersStateStateCustomersDate + - DateDateDateDate + - Month/YearMonth + and Year (12/2020)DateDate + - Quarter/YearQuarter + and Year (Q1/2020)DateDate + - Week/YearWeek + and Year (W52/2020)DateDate + - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate - - DateDateDateDate - - Week/YearWeek - and Year (W52/2020)DateDate - - Month/YearMonth - and Year (12/2020)DateDate - - Quarter/YearQuarter - and Year (Q1/2020)DateDate - - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels# of Active Customers# of OrdersfilterContext - - request: - method: POST - uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/set + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: body: ' CategoryCategory.CategoryCategory.Campaign channelsCampaign - channels.TypeType.TypeType.Campaign channelsCampaign channels.Campaign idCampaign id.Campaign @@ -1059,9 +1065,25 @@ interactions: id="attribute.customer_name">Customer nameCustomer name.Customer nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.Date + - DateDate - Date.DateDate.DateDate.Date + - Month/YearDate - Month/Year.Month and Year (12/2020)Month + and Year (12/2020).DateDate.Date + - Quarter/YearDate - Quarter/Year.Quarter and Year + (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date + - Week/YearDate - Week/Year.Week and Year (W52/2020)Week + and Year (W52/2020).DateDate.Date + - YearDate - Year.YearYear.DateDate.Order idOrder id.Order idOrder id.Order @@ -1083,29 +1105,17 @@ interactions: id="attribute.products.category">CategoryCategory.CategoryCategory.ProductsProducts.Date - - DateDate - Date.DateDate.DateDate.Date - - Week/YearDate - Week/Year.Week and Year (W52/2020)Week - and Year (W52/2020).DateDate.Date - - Month/YearDate - Month/Year.Month and Year (12/2020)Month - and Year (12/2020).DateDate.Date - - Quarter/YearDate - Quarter/Year.Quarter and Year - (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date - - YearDate - Year.YearYear.DateDate.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Campaign + id="attribute.state.tags">CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign + channels.Campaign channelsCampaign channels.Campaign channelsCampaign channels.Campaign @@ -1156,9 +1166,6 @@ interactions: id="label.campaign_channels.category">CategoryCategory.CategoryCategory.Campaign channelsCampaign - channels.TypeType.TypeType.Campaign channelsCampaign channels.Campaign idCampaign id.Campaign @@ -1172,12 +1179,24 @@ interactions: id="label.customer_name">Customer nameCustomer name.Customer nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Date + - DateDate - Date.DateDate.DateDate.Date + - Month/YearDate - Month/Year.Month and Year (12/2020)Month + and Year (12/2020).DateDate.Date + - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter + and Year (Q1/2020).DateDate.Date + - Week/YearDate - Week/Year.Week and Year (W52/2020)Week + and Year (W52/2020).DateDate.Date + - YearDate - Year.YearYear.DateDate.LocationLocation.LocationLocation.CustomersCustomers.CategoryCategory.CategoryCategory.ProductsProducts.Date - - DateDate - Date.DateDate.DateDate.Date - - Week/YearDate - Week/Year.Week and Year (W52/2020)Week - and Year (W52/2020).DateDate.Date - - Month/YearDate - Month/Year.Month and Year (12/2020)Month - and Year (12/2020).DateDate.Date - - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter - and Year (Q1/2020).DateDate.Date - - YearDate - Year.YearYear.DateDate.# + id="label.region">RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign + channels.# of Active Customers# of Active Customers.# of Orders# of Orders.CategoryCategory.Campaign channelsCampaign channels.TypeType.TypeType.Campaign channelsCampaign - channels.Campaign idCampaign - id.Campaign + id="attribute.campaign_id">Campaign + idCampaign id.Campaign idCampaign id.CampaignsCampaigns.Campaign nameCampaign name.Campaign @@ -1608,9 +1594,25 @@ interactions: id="attribute.customer_name">Customer nameCustomer name.Customer nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.Date + - DateDate - Date.DateDate.DateDate.Date + - Month/YearDate - Month/Year.Month and Year (12/2020)Month + and Year (12/2020).DateDate.Date + - Quarter/YearDate - Quarter/Year.Quarter and Year + (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date + - Week/YearDate - Week/Year.Week and Year (W52/2020)Week + and Year (W52/2020).DateDate.Date + - YearDate - Year.YearYear.DateDate.Order idOrder id.Order idOrder id.Order @@ -1632,29 +1634,17 @@ interactions: id="attribute.products.category">CategoryCategory.CategoryCategory.ProductsProducts.Date - - DateDate - Date.DateDate.DateDate.Date - - Week/YearDate - Week/Year.Week and Year (W52/2020)Week - and Year (W52/2020).DateDate.Date - - Month/YearDate - Month/Year.Month and Year (12/2020)Month - and Year (12/2020).DateDate.Date - - Quarter/YearDate - Quarter/Year.Quarter and Year - (Q1/2020)Quarter and Year (Q1/2020).DateDate.Date - - YearDate - Year.YearYear.DateDate.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Campaign + id="attribute.state.tags">CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign + channels.Campaign channelsCampaign channels.Campaign channelsCampaign channels.Campaign @@ -1708,10 +1698,6 @@ interactions: id="label.campaign_channels.category">CategoryCategory.CategoryCategory.Campaign channelsCampaign - channels.TypeType.TypeType.Campaign channelsCampaign channels.Campaign idCampaign id.Campaign @@ -1725,12 +1711,24 @@ interactions: id="label.customer_name">Customer nameCustomer name.Customer nameCustomer name.CustomersCustomers.RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.Date + - DateDate - Date.DateDate.DateDate.Date + - Month/YearDate - Month/Year.Month and Year (12/2020)Month + and Year (12/2020).DateDate.Date + - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter + and Year (Q1/2020).DateDate.Date + - Week/YearDate - Week/Year.Week and Year (W52/2020)Week + and Year (W52/2020).DateDate.Date + - YearDate - Year.YearYear.DateDate.LocationLocation.LocationLocation.CustomersCustomers.CategoryCategory.CategoryCategory.ProductsProducts.Date - - DateDate - Date.DateDate.DateDate.Date - - Week/YearDate - Week/Year.Week and Year (W52/2020)Week - and Year (W52/2020).DateDate.Date - - Month/YearDate - Month/Year.Month and Year (12/2020)Month - and Year (12/2020).DateDate.Date - - Quarter/YearDate - Quarter/Year.Quarter and Year (Q1/2020)Quarter - and Year (Q1/2020).DateDate.Date - - YearDate - Year.YearYear.DateDate.# + id="label.region">RegionRegion.RegionRegion.CustomersCustomers.StateState.StateState.CustomersCustomers.TypeType.TypeType.Campaign channelsCampaign + channels.# of Active Customers# of Active Customers.# of Orders# of Orders.filterContextfilterContext. - - request: - method: POST - uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/clean - body: - locale: fr-FR - headers: - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 204 - message: No Content headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml DATE: *id001 Expires: - '0' @@ -2022,7 +1998,12 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -2030,17 +2011,14 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve body: locale: fr-FR headers: - Accept: - - application/xml Accept-Encoding: - br, gzip, deflate Content-Type: @@ -2049,17 +2027,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/clean response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Content-Length: - - '40991' - Content-Type: - - application/xml DATE: *id001 Expires: - '0' @@ -2067,7 +2042,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -2075,7 +2053,27 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' + - 1; mode=block + status: + code: 204 + message: No Content + - request: + body: + locale: fr-FR + headers: + Accept: + - application/xml + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve + response: body: string: CategoryCategoryCampaign - channelsTypeTypeCampaign channelsCampaign - idCampaign - idCampaignsCampaign idCampaign idCampaignsCampaign nameCampaign nameCampaignsCustomer nameCustomer nameCustomersRegionRegionCustomersDate + - DateDateDateDate + - Month/YearMonth + and Year (12/2020)DateDate + - Quarter/YearQuarter + and Year (Q1/2020)DateDate + - Week/YearWeek + and Year (W52/2020)DateDate + - YearYearDateOrder idOrder idOrder @@ -2175,24 +2182,15 @@ interactions: id="attribute.products.category">CategoryCategoryProductsDate - - DateDateDateDate - - Week/YearWeek - and Year (W52/2020)DateDate - - Month/YearMonth - and Year (12/2020)DateDate - - Quarter/YearQuarter - and Year (Q1/2020)DateDate - - YearYearDateRegionRegionCustomersStateStateCustomersCustomersTypeTypeCampaign channelsCampaign channelsCampaign channelsCampaign @@ -2240,9 +2238,6 @@ interactions: id="label.campaign_channels.category.title">CategoryCategoryCampaign channelsTypeTypeCampaign channelsCampaign idCampaign idCampaignsCustomer nameCustomer nameCustomersRegionRegionCustomersStateStateCustomersDate + - DateDateDateDate + - Month/YearMonth + and Year (12/2020)DateDate + - Quarter/YearQuarter + and Year (Q1/2020)DateDate + - Week/YearWeek + and Year (W52/2020)DateDate + - YearYearDateLocationLocationCustomersCategoryCategoryProductsDate - - DateDateDateDate - - Week/YearWeek - and Year (W52/2020)DateDate - - Month/YearMonth - and Year (12/2020)DateDate - - Quarter/YearQuarter - and Year (Q1/2020)DateDate - - YearYearDateRegionRegionCustomersStateStateCustomersTypeTypeCampaign channels# of Active Customers# of OrdersfilterContext + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml index df058cd3c..4ff2c5765 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 12e12fabc332602d869be5b13d27b49f headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,34 +37,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 7db541cbd4184a9020146007667ae0e6 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings body: data: - type: workspaceSetting - id: test_setting attributes: content: value: fr-FR type: LOCALE + id: test_setting + type: workspaceSetting headers: Accept: - application/json @@ -75,15 +71,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting + meta: + origin: + originId: demo + originType: NATIVE + type: workspaceSetting + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '316' Content-Type: @@ -96,16 +104,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting + response: body: string: data: @@ -120,29 +146,10 @@ interactions: originType: NATIVE type: workspaceSetting links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '316' Content-Type: @@ -155,34 +162,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting - meta: - origin: - originId: demo - originType: NATIVE - type: workspaceSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting body: null headers: Accept-Encoding: @@ -191,15 +185,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -210,15 +203,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml index fc65c17bc..28cf504d3 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: bf85b0e584f229d359aca2d12d237aff headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,34 +37,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: ec45cd8b3a6ceb10dd359e9a9580354f + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings body: data: - type: workspaceSetting - id: test_setting attributes: content: value: fr-FR type: LOCALE + id: test_setting + type: workspaceSetting headers: Accept: - application/json @@ -75,15 +71,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting + meta: + origin: + originId: demo + originType: NATIVE + type: workspaceSetting + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '316' Content-Type: @@ -96,16 +104,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting + response: body: string: data: @@ -120,29 +146,10 @@ interactions: originType: NATIVE type: workspaceSetting links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '316' Content-Type: @@ -155,34 +162,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting - meta: - origin: - originId: demo - originType: NATIVE - type: workspaceSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting body: null headers: Accept-Encoding: @@ -191,15 +185,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -210,21 +203,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 body: null headers: Accept: @@ -235,15 +228,18 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 response: - status: - code: 200 - message: OK + body: + string: + data: [] + links: + next: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '289' Content-Type: @@ -256,25 +252,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: [] - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings?page=1&size=500 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting body: null headers: Accept-Encoding: @@ -283,15 +275,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -302,15 +293,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml index 939713df2..8acd19568 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-bigquery-ds body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/dataSources/demo-bigquery-ds response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 9111c8778e5284b189820d0cf98c2d40 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,35 +37,30 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: b495b86387d5ca4c821f6bfcbbc5123e + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources body: data: attributes: name: Test2 + password: demopass schema: demo type: POSTGRESQL - username: demouser - password: demopass url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer + username: demouser id: demo-bigquery-ds type: dataSource headers: @@ -78,15 +74,26 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/dataSources response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + authenticationType: USERNAME_PASSWORD + name: Test2 + schema: demo + type: POSTGRESQL + url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer + username: demouser + id: demo-bigquery-ds + type: dataSource + links: + self: http://localhost:3000/api/v1/entities/dataSources/demo-bigquery-ds headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '382' Content-Type: @@ -99,33 +106,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - url: jdbc:postgresql://localhost:5432/demo?autosave=false&sslmode=prefer - username: demouser - authenticationType: USERNAME_PASSWORD - name: Test2 - type: POSTGRESQL - schema: demo - id: demo-bigquery-ds - type: dataSource - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-bigquery-ds + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: null headers: Accept: @@ -136,40 +131,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -181,48 +145,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -265,7 +229,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -277,145 +241,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -427,7 +391,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -437,7 +401,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -450,19 +414,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -470,15 +434,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -488,7 +452,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -497,7 +461,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -507,7 +471,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -517,7 +481,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -527,7 +491,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -536,7 +500,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -545,7 +509,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -555,7 +519,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -565,7 +529,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -575,7 +539,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -585,7 +549,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -595,7 +559,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -605,7 +569,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -615,7 +579,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -626,7 +590,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -636,7 +600,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -646,7 +610,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -656,7 +620,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -665,7 +629,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -674,7 +638,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -683,7 +647,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -692,7 +656,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -701,7 +665,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -710,12 +674,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -775,7 +740,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -823,9 +788,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -851,7 +816,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -930,7 +895,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -989,7 +954,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1046,7 +1011,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1064,9 +1029,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1099,7 +1064,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1174,7 +1139,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1231,7 +1196,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1330,7 +1295,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1386,7 +1351,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1425,7 +1390,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1481,7 +1446,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1549,7 +1514,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1606,7 +1571,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1663,7 +1628,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -1675,6 +1640,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1683,6 +1649,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1691,6 +1658,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1708,6 +1676,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1715,6 +1684,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1732,6 +1702,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1764,6 +1735,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1778,6 +1750,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1786,6 +1759,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1813,6 +1787,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1821,6 +1796,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1829,6 +1805,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1837,9 +1814,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1872,6 +1851,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1880,6 +1860,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1888,6 +1869,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1905,6 +1887,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1912,6 +1895,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1929,6 +1913,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1939,6 +1924,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1949,6 +1935,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1959,6 +1946,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1980,6 +1968,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1988,6 +1977,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1996,6 +1986,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -2034,46 +2025,51 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '199' + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces + response: body: string: data: @@ -2082,10 +2078,33 @@ interactions: id: demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces + self: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '199' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces body: null headers: Accept: @@ -2096,15 +2115,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 7962c53f71668c78901ba9a614e6d8de headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -2113,26 +2136,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 7f12a363837e4aa580d964a3906acfad + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces body: null headers: Accept: @@ -2143,15 +2161,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: a147cad3e7191328f018c2539112f5ed headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -2160,32 +2182,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 791315b0de437cd04bc4fa0c3ee40246 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_clone - type: workspace attributes: name: Demo (Clone) + id: demo_clone + type: workspace headers: Accept: - application/json @@ -2197,15 +2214,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: Demo (Clone) + id: demo_clone + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_clone headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '200' Content-Type: @@ -2218,28 +2241,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo (Clone) - id: demo_clone - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -2250,37 +2266,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -2312,9 +2300,36 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: - columnName: wdf__region @@ -2361,15 +2376,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2378,388 +2392,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_clone body: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: CAMPAIGN_CHANNEL_ID - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: CATEGORY - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: TYPE - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: BUDGET - title: Budget - sourceColumnDataType: NUMERIC - description: Budget - tags: - - Campaign channels - - id: spend - sourceColumn: SPEND - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CAMPAIGN_CHANNELS - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_CHANNEL_ID - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: BUDGET - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-bigquery-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: CAMPAIGN_ID - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: CAMPAIGN_NAME - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CAMPAIGNS - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: CUSTOMER_ID - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: CUSTOMER_NAME - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: REGION - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: GEO__STATE__LOCATION - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - sourceColumn: STATE - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CUSTOMERS - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: CUSTOMER_ID - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: DATE - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: PRODUCT_ID - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: ORDER_ID - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: ORDER_LINE_ID - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: ORDER_STATUS - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: PRICE - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: QUANTITY - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: ORDER_LINES - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region_demo_clone - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: PRODUCT_ID - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: PRODUCT_NAME - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: CATEGORY - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: PRODUCTS - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -2767,58 +2417,58 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -2851,452 +2501,454 @@ interactions: type: dashboardPlugin version: '2' version: '2' - id: dashboard_plugin - title: Dashboard plugin - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: dashboard_plugin + title: Dashboard plugin - content: filterContextRef: identifier: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: product_and_category - title: Product & Category - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' - analyticalDashboardExtensions: [] + id: product_and_category + title: Product & Category attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' - id: dashboard_plugin_1 - title: dashboard_plugin_1 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: Testing record dashboard_plugin_1 + id: dashboard_plugin_1 + title: dashboard_plugin_1 - content: url: https://www.example.com version: '2' - id: dashboard_plugin_2 - title: dashboard_plugin_2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: Testing record dashboard_plugin_2 + id: dashboard_plugin_2 + title: dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - id: amount_of_active_customers - title: '# of Active Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: amount_of_active_customers + title: '# of Active Customers' - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - id: amount_of_orders - title: '# of Orders' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: amount_of_orders + title: '# of Orders' - content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - id: amount_of_top_customers - title: '# of Top Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: amount_of_top_customers + title: '# of Top Customers' - content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - id: amount_of_valid_orders - title: '# of Valid Orders' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' + id: amount_of_valid_orders + title: '# of Valid Orders' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: campaign_spend + title: Campaign Spend - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - id: order_amount - title: Order Amount - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: order_amount + title: Order Amount - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - id: percent_revenue - title: '% Revenue' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue + title: '% Revenue' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_customers - title: '% Revenue from Top 10 Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_customers + title: '% Revenue from Top 10 Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_customers - title: '% Revenue from Top 10% Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_percent_customers + title: '% Revenue from Top 10% Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_products - title: '% Revenue from Top 10% Products' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_percent_products + title: '% Revenue from Top 10% Products' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_products - title: '% Revenue from Top 10 Products' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_products + title: '% Revenue from Top 10 Products' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - id: percent_revenue_in_category - title: '% Revenue in Category' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_in_category + title: '% Revenue in Category' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - id: percent_revenue_per_product - title: '% Revenue per Product' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_per_product + title: '% Revenue per Product' - content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - id: revenue - title: Revenue - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' + id: revenue + title: Revenue - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - id: revenue-clothing - title: Revenue (Clothing) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-clothing + title: Revenue (Clothing) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - id: revenue-electronic - title: Revenue (Electronic) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-electronic + title: Revenue (Electronic) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - id: revenue-home - title: Revenue (Home) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-home + title: Revenue (Home) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - id: revenue-outdoor - title: Revenue (Outdoor) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-outdoor + title: Revenue (Outdoor) - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - id: revenue_per_customer - title: Revenue per Customer - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_per_customer + title: Revenue per Customer - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - id: revenue_per_dollar_spent - title: Revenue per Dollar Spent - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_per_dollar_spent + title: Revenue per Dollar Spent - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - id: revenue_top_10 - title: Revenue / Top 10 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_top_10 + title: Revenue / Top 10 - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - id: revenue_top_10_percent - title: Revenue / Top 10% - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_top_10_percent + title: Revenue / Top 10% - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - id: total_revenue - title: Total Revenue - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: total_revenue + title: Total Revenue - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - id: total_revenue-no_filters - title: Total Revenue (No Filters) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: total_revenue-no_filters + title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -3356,12 +3008,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: campaign_spend + title: Campaign Spend - content: buckets: - items: @@ -3404,9 +3056,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -3432,12 +3084,12 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - id: customers_trend - title: Customers Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: customers_trend + title: Customers Trend - content: buckets: - items: @@ -3511,12 +3163,12 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - id: percent_revenue_per_product_by_customer_and_category - title: '% Revenue per Product by Customer and Category' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_per_product_by_customer_and_category + title: '% Revenue per Product by Customer and Category' - content: buckets: - items: @@ -3570,12 +3222,12 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - id: percentage_of_customers_by_region - title: Percentage of Customers by Region - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percentage_of_customers_by_region + title: Percentage of Customers by Region - content: buckets: - items: @@ -3627,12 +3279,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - id: product_breakdown - title: Product Breakdown - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_breakdown + title: Product Breakdown - content: buckets: - items: @@ -3645,9 +3297,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3680,12 +3332,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - id: product_categories_pie_chart - title: Product Categories Pie Chart - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_categories_pie_chart + title: Product Categories Pie Chart - content: buckets: - items: @@ -3755,12 +3407,12 @@ interactions: visible: false version: '2' visualizationUrl: local:column - id: product_revenue_comparison-over_previous_period - title: Product Revenue Comparison (over previous period) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_revenue_comparison-over_previous_period + title: Product Revenue Comparison (over previous period) - content: buckets: - items: @@ -3812,12 +3464,12 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - id: product_saleability - title: Product Saleability - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_saleability + title: Product Saleability - content: buckets: - items: @@ -3911,12 +3563,12 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - id: revenue_and_quantity_by_product_and_category - title: Revenue and Quantity by Product and Category - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_and_quantity_by_product_and_category + title: Revenue and Quantity by Product and Category - content: buckets: - items: @@ -3967,12 +3619,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - id: revenue_by_category_trend - title: Revenue by Category Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_by_category_trend + title: Revenue by Category Trend - content: buckets: - items: @@ -4006,12 +3658,12 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - id: revenue_by_product - title: Revenue by Product - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_by_product + title: Revenue by Product - content: buckets: - items: @@ -4062,12 +3714,12 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - id: revenue_per_usd_vs_spend_by_campaign - title: Revenue per $ vs Spend by Campaign - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_per_usd_vs_spend_by_campaign + title: Revenue per $ vs Spend by Campaign - content: buckets: - items: @@ -4130,12 +3782,12 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - id: revenue_trend - title: Revenue Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_trend + title: Revenue Trend - content: buckets: - items: @@ -4187,12 +3839,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - id: top_10_customers - title: Top 10 Customers - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: top_10_customers + title: Top 10 Customers - content: buckets: - items: @@ -4244,6279 +3896,403 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - id: top_10_products - title: Top 10 Products - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user - exportDefinitions: [] - memoryItems: [] - headers: - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 204 - message: No Content - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/permissions - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '292' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW - - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_clone/permissions - body: - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - headers: - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 204 - message: No Content - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '219' - Content-Type: - - application/json - DATE: *id001 - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo (Clone) - id: demo_clone - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_clone - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - analytics: - analyticalDashboardExtensions: [] - analyticalDashboards: - - content: - filterContextRef: - identifier: - id: campaign_name_filter - type: filterContext - layout: - type: IDashboardLayout - sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue - description: The first insight shows a breakdown of spend - by category and campaign. The second shows revenue per - $ spend, for each campaign, to demonstrate, how campaigns - are successful. - items: - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Campaign Spend - description: '' - ignoreDashboardFilters: [] - insight: - identifier: - id: campaign_spend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Revenue per $ vs Spend by Campaign - description: '' - ignoreDashboardFilters: [] - insight: - identifier: - id: revenue_per_usd_vs_spend_by_campaign - type: visualizationObject - drills: [] - properties: {} - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: campaign - permissions: - - assigneeRule: - type: allWorkspaceUsers - name: VIEW - title: Campaign - - content: - filterContextRef: - identifier: - id: campaign_name_filter - type: filterContext - layout: - sections: - - items: - - size: - xl: - gridWidth: 12 - type: IDashboardLayoutItem - widget: - description: '' - drills: [] - ignoreDashboardFilters: [] - insight: - identifier: - id: top_10_products - type: visualizationObject - properties: {} - title: DHO simple - type: insight - type: IDashboardLayoutSection - type: IDashboardLayout - plugins: - - plugin: - identifier: - id: dashboard_plugin_1 - type: dashboardPlugin - version: '2' - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: dashboard_plugin - title: Dashboard plugin - - content: - filterContextRef: - identifier: - id: region_filter - type: filterContext - layout: - type: IDashboardLayout - sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: top_10_products - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: revenue_trend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: customers_trend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_categories_pie_chart - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_breakdown - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_saleability - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 12 - widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: percent_revenue_per_product_by_customer_and_category - type: visualizationObject - drills: [] - properties: {} - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: product_and_category - title: Product & Category - attributeHierarchies: [] - dashboardPlugins: - - content: - url: https://www.example.com - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: Testing record dashboard_plugin_1 - id: dashboard_plugin_1 - title: dashboard_plugin_1 - - content: - url: https://www.example.com - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: Testing record dashboard_plugin_2 - id: dashboard_plugin_2 - title: dashboard_plugin_2 - exportDefinitions: [] - filterContexts: - - content: - filters: - - dateFilter: - from: '0' - to: '0' - granularity: GDC.time.month - type: relative - - attributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d - filterElementsBy: [] - version: '2' - description: '' - id: campaign_name_filter - title: filterContext - - content: - filters: - - attributeFilter: - displayForm: - identifier: - id: region - type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af - filterElementsBy: [] - version: '2' - description: '' - id: region_filter - title: filterContext - memoryItems: [] - metrics: - - content: - format: '#,##0' - maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: amount_of_active_customers - title: '# of Active Customers' - - content: - format: '#,##0' - maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: amount_of_orders - title: '# of Orders' - - content: - format: '#,##0' - maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT - {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: amount_of_top_customers - title: '# of Top Customers' - - content: - format: '#,##0.00' - maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} - IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: amount_of_valid_orders - title: '# of Valid Orders' - - content: - format: $#,##0 - maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: campaign_spend - title: Campaign Spend - - content: - format: $#,##0 - maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: order_amount - title: Order Amount - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue - title: '% Revenue' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ - \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_customers - title: '% Revenue from Top 10 Customers' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ - \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_percent_customers - title: '% Revenue from Top 10% Customers' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ - \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_percent_products - title: '% Revenue from Top 10% Products' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ - \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_products - title: '% Revenue from Top 10 Products' - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, - ALL OTHER) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_in_category - title: '% Revenue in Category' - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL - {attribute/product_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_per_product - title: '% Revenue per Product' - - content: - format: $#,##0 - maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} - IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: revenue - title: Revenue - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ("Clothing") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-clothing - title: Revenue (Clothing) - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ( "Electronics") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-electronic - title: Revenue (Electronic) - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ("Home") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-home - title: Revenue (Home) - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ("Outdoor") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-outdoor - title: Revenue (Outdoor) - - content: - format: $#,##0.0 - maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_per_customer - title: Revenue per Customer - - content: - format: $#,##0.0 - maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_per_dollar_spent - title: Revenue per Dollar Spent - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_top_10 - title: Revenue / Top 10 - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_top_10_percent - title: Revenue / Top 10% - - content: - format: $#,##0 - maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: total_revenue - title: Total Revenue - - content: - format: $#,##0 - maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: total_revenue-no_filters - title: Total Revenue (No Filters) - visualizationObjects: - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: campaign_spend - type: metric - localIdentifier: d319bcb2d8c04442a684e3b3cd063381 - title: Campaign Spend - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: campaign_channels.category - type: label - localIdentifier: 291c085e7df8420db84117ca49f59c49 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: campaign_name - type: label - localIdentifier: d9dd143d647d4d148405a60ec2cf59bc - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: type - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_channels.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: campaign_spend - title: Campaign Spend - - content: - buckets: - - items: - - measure: - alias: Active Customers - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: amount_of_active_customers - type: metric - localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 - title: '# of Active Customers' - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_per_customer - type: metric - localIdentifier: ec0606894b9f4897b7beaf1550608928 - title: Revenue per Customer - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 0de7d7f08af7480aa636857a26be72b6 - localIdentifier: view - filters: - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - properties: - controls: - colorMapping: - - color: - type: guid - value: '20' - id: 2ba0b87b59ca41a4b1530e81a5c1d081 - - color: - type: guid - value: '4' - id: ec0606894b9f4897b7beaf1550608928 - dualAxis: true - legend: - position: bottom - primaryChartType: column - secondaryChartType: line - secondary_yaxis: - measures: - - ec0606894b9f4897b7beaf1550608928 - xaxis: - name: - visible: false - rotation: auto - version: '2' - visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: customers_trend - title: Customers Trend - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: percent_revenue_per_product - type: metric - localIdentifier: 08d8346c1ce7438994b251991c0fbf65 - title: '% Revenue per Product' - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: b2350c06688b4da9b3833ebcce65527f - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: customer_name - type: label - localIdentifier: 7a4045fd00ac44579f52406df679435f - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 6a003ffd14994237ba64c4a02c488429 - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: {} - sorts: - - attributeSortItem: - attributeIdentifier: 7a4045fd00ac44579f52406df679435f - direction: asc - version: '2' - visualizationUrl: local:table - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_per_product_by_customer_and_category - title: '% Revenue per Product by Customer and Category' - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: amount_of_active_customers - type: metric - localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 - title: '# of Active Customers' - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: region - type: label - localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: region - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - properties: - controls: - legend: - position: bottom - stackMeasuresToPercent: true - version: '2' - visualizationUrl: local:area - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percentage_of_customers_by_region - title: Percentage of Customers by Region - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 590d332ef686468b8878ae41b23341c6 - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: b166c71091864312a14c7ae8ff886ffe - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: e920a50e0bbb49788df0aac53634c1cd - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_breakdown - title: Product Breakdown - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - computeRatio: true - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 162b857af49d45769bc12604a5c192b9 - title: '% Revenue' - format: '#,##0.00%' - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - dataLabels: - visible: auto - legend: - position: bottom - version: '2' - visualizationUrl: local:donut - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_categories_pie_chart - title: Product Categories Pie Chart - - content: - buckets: - - items: - - measure: - alias: Previous Period - definition: - popMeasureDefinition: - measureIdentifier: c82e025fa2db4afea9a600a424591dbe - popAttribute: - identifier: - id: date.year - type: attribute - localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop - - measure: - alias: This Period - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: c82e025fa2db4afea9a600a424591dbe - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - stackMeasures: false - xaxis: - name: - visible: false - yaxis: - name: - visible: false - version: '2' - visualizationUrl: local:column - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_revenue_comparison-over_previous_period - title: Product Revenue Comparison (over previous period) - - content: - buckets: - - items: - - measure: - alias: Number of Orders - definition: - measureDefinition: - filters: [] - item: - identifier: - id: amount_of_orders - type: metric - localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 - title: '# of Orders' - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 - title: Revenue - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: d2a991bdd123448eb2be73d79f1180c4 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: - controls: - dataLabels: - visible: auto - grid: - enabled: true - version: '2' - visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_saleability - title: Product Saleability - - content: - buckets: - - items: - - measure: - alias: Items Sold - definition: - measureDefinition: - aggregation: sum - filters: [] - item: - identifier: - id: quantity - type: fact - format: '#,##0.00' - localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 - title: Sum of Quantity - - measure: - definition: - measureDefinition: - aggregation: avg - filters: [] - item: - identifier: - id: price - type: fact - format: '#,##0.00' - localIdentifier: aa6391acccf1452f8011201aef9af492 - title: Avg Price - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: percent_revenue_in_category - type: metric - localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 - title: '% Revenue in Category' - - measure: - alias: Total Revenue - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 06bc6b3b9949466494e4f594c11f1bff - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: {} - sorts: - - attributeSortItem: - attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff - direction: asc - version: '2' - visualizationUrl: local:table - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_and_quantity_by_product_and_category - title: Revenue and Quantity by Product and Category - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 - localIdentifier: trend - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - granularity: GDC.time.year - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:line - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_by_category_trend - title: Revenue by Category Trend - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: {} - version: '2' - visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_by_product - title: Revenue by Product - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: campaign_spend - type: metric - localIdentifier: 13a50d811e474ac6808d8da7f4673b35 - title: Campaign Spend - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_per_dollar_spent - type: metric - localIdentifier: a0f15e82e6334280a44dbedc7d086e7c - title: Revenue per Dollar Spent - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: campaign_name - type: label - localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - notIn: - values: [] - properties: - controls: - xaxis: - min: '0' - yaxis: - min: '0' - version: '2' - visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_per_usd_vs_spend_by_campaign - title: Revenue per $ vs Spend by Campaign - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 60c854969a9c4c278ab596d99c222e92 - title: Revenue - localIdentifier: measures - - items: - - measure: - alias: Number of Orders - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: amount_of_orders - type: metric - localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 - title: '# of Orders' - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 413ac374b65648fa96826ca01d47bdda - localIdentifier: view - filters: - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -3 - granularity: GDC.time.quarter - to: 0 - properties: - controls: - dualAxis: true - legend: - position: bottom - primaryChartType: column - secondaryChartType: line - secondary_yaxis: - measures: - - c2fa7ef48cc54af99f8c280eb451e051 - xaxis: - name: - visible: false - rotation: auto - version: '2' - visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_trend - title: Revenue Trend - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_top_10 - type: metric - localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 - title: Revenue / Top 10 - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: customer_name - type: label - localIdentifier: f4e39e24f11e4827a191c30d65c89d2c - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: state - type: label - localIdentifier: bbccd430176d428caed54c99afc9589e - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: state - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: top_10_customers - title: Top 10 Customers - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_top_10 - type: metric - localIdentifier: 77dc71bbac92412bac5f94284a5919df - title: Revenue / Top 10 - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 781952e728204dcf923142910cc22ae2 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: top_10_products - title: Top 10 Products - ldm: - datasets: - - aggregatedFacts: [] - attributes: - - description: Campaign channel id - id: campaign_channel_id - labels: [] - sourceColumn: CAMPAIGN_CHANNEL_ID - sourceColumnDataType: STRING - tags: - - Campaign channels - title: Campaign channel id - - description: Category - id: campaign_channels.category - labels: [] - sourceColumn: CATEGORY - sourceColumnDataType: STRING - tags: - - Campaign channels - title: Category - - description: Type - id: type - labels: [] - sourceColumn: TYPE - sourceColumnDataType: STRING - tags: - - Campaign channels - title: Type - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CAMPAIGN_CHANNELS - path: - - demo - - campaign_channels - type: dataSource - description: Campaign channels - facts: - - description: Budget - id: budget - sourceColumn: BUDGET - sourceColumnDataType: NUMERIC - tags: - - Campaign channels - title: Budget - - description: Spend - id: spend - sourceColumn: SPEND - sourceColumnDataType: NUMERIC - tags: - - Campaign channels - title: Spend - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - dataType: INT - target: - id: campaign_id - type: attribute - tags: - - Campaign channels - title: Campaign channels - - aggregatedFacts: - - description: Budget Agg - id: budget_agg - sourceColumn: BUDGET - sourceColumnDataType: INT - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - tags: - - Campaign channels per category - attributes: [] - description: Campaign channels per categories - facts: [] - grain: [] - id: campaign_channels_per_category - precedence: 1 - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_CHANNEL_ID - dataType: STRING - target: - id: campaign_channel_id - type: attribute - sql: - dataSourceId: demo-bigquery-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - title: Campaign channels per category - - aggregatedFacts: [] - attributes: - - description: Campaign id - id: campaign_id - labels: [] - sourceColumn: CAMPAIGN_ID - sourceColumnDataType: INT - tags: - - Campaigns - title: Campaign id - - description: Campaign name - id: campaign_name - labels: [] - sourceColumn: CAMPAIGN_NAME - sourceColumnDataType: STRING - tags: - - Campaigns - title: Campaign name - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CAMPAIGNS - path: - - demo - - campaigns - type: dataSource - description: Campaigns - facts: [] - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - tags: - - Campaigns - title: Campaigns - - aggregatedFacts: [] - attributes: - - description: Customer id - id: customer_id - labels: [] - sourceColumn: CUSTOMER_ID - sourceColumnDataType: INT - tags: - - Customers - title: Customer id - - description: Customer name - id: customer_name - labels: [] - sourceColumn: CUSTOMER_NAME - sourceColumnDataType: STRING - tags: - - Customers - title: Customer name - - description: Region - id: region - labels: [] - sourceColumn: REGION - sourceColumnDataType: STRING - tags: - - Customers - title: Region - - description: State - id: state - labels: - - description: Location - id: geo__state__location - sourceColumn: GEO__STATE__LOCATION - sourceColumnDataType: STRING - tags: - - Customers - title: Location - valueType: GEO - sourceColumn: STATE - sourceColumnDataType: STRING - tags: - - Customers - title: State - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CUSTOMERS - path: - - demo - - customers - type: dataSource - description: Customers - facts: [] - grain: - - id: customer_id - type: attribute - id: customers - references: [] - tags: - - Customers - title: Customers - - aggregatedFacts: [] - attributes: - - description: Order id - id: order_id - labels: [] - sourceColumn: ORDER_ID - sourceColumnDataType: STRING - tags: - - Order lines - title: Order id - - description: Order line id - id: order_line_id - labels: [] - sourceColumn: ORDER_LINE_ID - sourceColumnDataType: STRING - tags: - - Order lines - title: Order line id - - description: Order status - id: order_status - labels: [] - sourceColumn: ORDER_STATUS - sourceColumnDataType: STRING - tags: - - Order lines - title: Order status - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: ORDER_LINES - path: - - demo - - order_lines - type: dataSource - description: Order lines - facts: - - description: Price - id: price - sourceColumn: PRICE - sourceColumnDataType: NUMERIC - tags: - - Order lines - title: Price - - description: Quantity - id: quantity - sourceColumn: QUANTITY - sourceColumnDataType: NUMERIC - tags: - - Order lines - title: Quantity - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - dataType: INT - target: - id: campaign_id - type: attribute - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: CUSTOMER_ID - dataType: INT - target: - id: customer_id - type: attribute - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: DATE - dataType: DATE - target: - id: date - type: date - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: PRODUCT_ID - dataType: INT - target: - id: product_id - type: attribute - tags: - - Order lines - title: Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region_demo_clone - type: workspaceDataFilter - - aggregatedFacts: [] - attributes: - - description: Product id - id: product_id - labels: [] - sourceColumn: PRODUCT_ID - sourceColumnDataType: INT - tags: - - Products - title: Product id - - description: Product name - id: product_name - labels: [] - sourceColumn: PRODUCT_NAME - sourceColumnDataType: STRING - tags: - - Products - title: Product name - - description: Category - id: products.category - labels: [] - sourceColumn: CATEGORY - sourceColumnDataType: STRING - tags: - - Products - title: Category - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: PRODUCTS - path: - - demo - - products - type: dataSource - description: Products - facts: [] - grain: - - id: product_id - type: attribute - id: products - references: [] - tags: - - Products - title: Products - dateInstances: - - description: '' - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - tags: - - Date - title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - analytics: - analyticalDashboardExtensions: [] - analyticalDashboards: - - content: - filterContextRef: - identifier: - id: campaign_name_filter - type: filterContext - layout: - type: IDashboardLayout - sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue - description: The first insight shows a breakdown of spend - by category and campaign. The second shows revenue per - $ spend, for each campaign, to demonstrate, how campaigns - are successful. - items: - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Campaign Spend - description: '' - ignoreDashboardFilters: [] - insight: - identifier: - id: campaign_spend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Revenue per $ vs Spend by Campaign - description: '' - ignoreDashboardFilters: [] - insight: - identifier: - id: revenue_per_usd_vs_spend_by_campaign - type: visualizationObject - drills: [] - properties: {} - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: campaign - permissions: - - assigneeRule: - type: allWorkspaceUsers - name: VIEW - title: Campaign - - content: - filterContextRef: - identifier: - id: campaign_name_filter - type: filterContext - layout: - sections: - - items: - - size: - xl: - gridWidth: 12 - type: IDashboardLayoutItem - widget: - description: '' - drills: [] - ignoreDashboardFilters: [] - insight: - identifier: - id: top_10_products - type: visualizationObject - properties: {} - title: DHO simple - type: insight - type: IDashboardLayoutSection - type: IDashboardLayout - plugins: - - plugin: - identifier: - id: dashboard_plugin_1 - type: dashboardPlugin - version: '2' - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: dashboard_plugin - title: Dashboard plugin - - content: - filterContextRef: - identifier: - id: region_filter - type: filterContext - layout: - type: IDashboardLayout - sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: top_10_products - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: revenue_trend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: customers_trend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_categories_pie_chart - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_breakdown - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_saleability - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 12 - widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: percent_revenue_per_product_by_customer_and_category - type: visualizationObject - drills: [] - properties: {} - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: product_and_category - title: Product & Category - attributeHierarchies: [] - dashboardPlugins: - - content: - url: https://www.example.com - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: Testing record dashboard_plugin_1 - id: dashboard_plugin_1 - title: dashboard_plugin_1 - - content: - url: https://www.example.com - version: '2' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: Testing record dashboard_plugin_2 - id: dashboard_plugin_2 - title: dashboard_plugin_2 - exportDefinitions: [] - filterContexts: - - content: - filters: - - dateFilter: - from: '0' - to: '0' - granularity: GDC.time.month - type: relative - - attributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d - filterElementsBy: [] - version: '2' - description: '' - id: campaign_name_filter - title: filterContext - - content: - filters: - - attributeFilter: - displayForm: - identifier: - id: region - type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af - filterElementsBy: [] - version: '2' - description: '' - id: region_filter - title: filterContext - memoryItems: [] - metrics: - - content: - format: '#,##0' - maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: amount_of_active_customers - title: '# of Active Customers' - - content: - format: '#,##0' - maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: amount_of_orders - title: '# of Orders' - - content: - format: '#,##0' - maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT - {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: amount_of_top_customers - title: '# of Top Customers' - - content: - format: '#,##0.00' - maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} - IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: amount_of_valid_orders - title: '# of Valid Orders' - - content: - format: $#,##0 - maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: campaign_spend - title: Campaign Spend - - content: - format: $#,##0 - maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: order_amount - title: Order Amount - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue - title: '% Revenue' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ - \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_customers - title: '% Revenue from Top 10 Customers' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ - \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_percent_customers - title: '% Revenue from Top 10% Customers' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ - \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_percent_products - title: '% Revenue from Top 10% Products' - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ - \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_from_top_10_products - title: '% Revenue from Top 10 Products' - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, - ALL OTHER) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_in_category - title: '% Revenue in Category' - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL - {attribute/product_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_per_product - title: '% Revenue per Product' - - content: - format: $#,##0 - maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} - IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - id: revenue - title: Revenue - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ("Clothing") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-clothing - title: Revenue (Clothing) - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ( "Electronics") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-electronic - title: Revenue (Electronic) - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ("Home") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-home - title: Revenue (Home) - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN - ("Outdoor") - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue-outdoor - title: Revenue (Outdoor) - - content: - format: $#,##0.0 - maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_per_customer - title: Revenue per Customer - - content: - format: $#,##0.0 - maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_per_dollar_spent - title: Revenue per Dollar Spent - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_top_10 - title: Revenue / Top 10 - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_top_10_percent - title: Revenue / Top 10% - - content: - format: $#,##0 - maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: total_revenue - title: Total Revenue - - content: - format: $#,##0 - maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: total_revenue-no_filters - title: Total Revenue (No Filters) - visualizationObjects: - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: campaign_spend - type: metric - localIdentifier: d319bcb2d8c04442a684e3b3cd063381 - title: Campaign Spend - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: campaign_channels.category - type: label - localIdentifier: 291c085e7df8420db84117ca49f59c49 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: campaign_name - type: label - localIdentifier: d9dd143d647d4d148405a60ec2cf59bc - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: type - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_channels.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: campaign_spend - title: Campaign Spend - - content: - buckets: - - items: - - measure: - alias: Active Customers - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: amount_of_active_customers - type: metric - localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 - title: '# of Active Customers' - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_per_customer - type: metric - localIdentifier: ec0606894b9f4897b7beaf1550608928 - title: Revenue per Customer - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 0de7d7f08af7480aa636857a26be72b6 - localIdentifier: view - filters: - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - properties: - controls: - colorMapping: - - color: - type: guid - value: '20' - id: 2ba0b87b59ca41a4b1530e81a5c1d081 - - color: - type: guid - value: '4' - id: ec0606894b9f4897b7beaf1550608928 - dualAxis: true - legend: - position: bottom - primaryChartType: column - secondaryChartType: line - secondary_yaxis: - measures: - - ec0606894b9f4897b7beaf1550608928 - xaxis: - name: - visible: false - rotation: auto - version: '2' - visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: customers_trend - title: Customers Trend - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: percent_revenue_per_product - type: metric - localIdentifier: 08d8346c1ce7438994b251991c0fbf65 - title: '% Revenue per Product' - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: b2350c06688b4da9b3833ebcce65527f - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: customer_name - type: label - localIdentifier: 7a4045fd00ac44579f52406df679435f - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 6a003ffd14994237ba64c4a02c488429 - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: {} - sorts: - - attributeSortItem: - attributeIdentifier: 7a4045fd00ac44579f52406df679435f - direction: asc - version: '2' - visualizationUrl: local:table - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percent_revenue_per_product_by_customer_and_category - title: '% Revenue per Product by Customer and Category' - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: amount_of_active_customers - type: metric - localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 - title: '# of Active Customers' - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: region - type: label - localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: region - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - properties: - controls: - legend: - position: bottom - stackMeasuresToPercent: true - version: '2' - visualizationUrl: local:area - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: percentage_of_customers_by_region - title: Percentage of Customers by Region - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 590d332ef686468b8878ae41b23341c6 - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: b166c71091864312a14c7ae8ff886ffe - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: e920a50e0bbb49788df0aac53634c1cd - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_breakdown - title: Product Breakdown - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - computeRatio: true - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 162b857af49d45769bc12604a5c192b9 - title: '% Revenue' - format: '#,##0.00%' - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - dataLabels: - visible: auto - legend: - position: bottom - version: '2' - visualizationUrl: local:donut - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_categories_pie_chart - title: Product Categories Pie Chart - - content: - buckets: - - items: - - measure: - alias: Previous Period - definition: - popMeasureDefinition: - measureIdentifier: c82e025fa2db4afea9a600a424591dbe - popAttribute: - identifier: - id: date.year - type: attribute - localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop - - measure: - alias: This Period - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: c82e025fa2db4afea9a600a424591dbe - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - stackMeasures: false - xaxis: - name: - visible: false - yaxis: - name: - visible: false - version: '2' - visualizationUrl: local:column - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_revenue_comparison-over_previous_period - title: Product Revenue Comparison (over previous period) - - content: - buckets: - - items: - - measure: - alias: Number of Orders - definition: - measureDefinition: - filters: [] - item: - identifier: - id: amount_of_orders - type: metric - localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 - title: '# of Orders' - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 - title: Revenue - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: d2a991bdd123448eb2be73d79f1180c4 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: - controls: - dataLabels: - visible: auto - grid: - enabled: true - version: '2' - visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: product_saleability - title: Product Saleability - - content: - buckets: - - items: - - measure: - alias: Items Sold - definition: - measureDefinition: - aggregation: sum - filters: [] - item: - identifier: - id: quantity - type: fact - format: '#,##0.00' - localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 - title: Sum of Quantity - - measure: - definition: - measureDefinition: - aggregation: avg - filters: [] - item: - identifier: - id: price - type: fact - format: '#,##0.00' - localIdentifier: aa6391acccf1452f8011201aef9af492 - title: Avg Price - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: percent_revenue_in_category - type: metric - localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 - title: '% Revenue in Category' - - measure: - alias: Total Revenue - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 06bc6b3b9949466494e4f594c11f1bff - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: {} - sorts: - - attributeSortItem: - attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff - direction: asc - version: '2' - visualizationUrl: local:table - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_and_quantity_by_product_and_category - title: Revenue and Quantity by Product and Category - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 - localIdentifier: trend - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - granularity: GDC.time.year - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:line - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_by_category_trend - title: Revenue by Category Trend - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: {} - version: '2' - visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_by_product - title: Revenue by Product - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: campaign_spend - type: metric - localIdentifier: 13a50d811e474ac6808d8da7f4673b35 - title: Campaign Spend - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_per_dollar_spent - type: metric - localIdentifier: a0f15e82e6334280a44dbedc7d086e7c - title: Revenue per Dollar Spent - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: campaign_name - type: label - localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - notIn: - values: [] - properties: - controls: - xaxis: - min: '0' - yaxis: - min: '0' - version: '2' - visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_per_usd_vs_spend_by_campaign - title: Revenue per $ vs Spend by Campaign - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 60c854969a9c4c278ab596d99c222e92 - title: Revenue - localIdentifier: measures - - items: - - measure: - alias: Number of Orders - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: amount_of_orders - type: metric - localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 - title: '# of Orders' - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 413ac374b65648fa96826ca01d47bdda - localIdentifier: view - filters: - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -3 - granularity: GDC.time.quarter - to: 0 - properties: - controls: - dualAxis: true - legend: - position: bottom - primaryChartType: column - secondaryChartType: line - secondary_yaxis: - measures: - - c2fa7ef48cc54af99f8c280eb451e051 - xaxis: - name: - visible: false - rotation: auto - version: '2' - visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: revenue_trend - title: Revenue Trend - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_top_10 - type: metric - localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 - title: Revenue / Top 10 - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: customer_name - type: label - localIdentifier: f4e39e24f11e4827a191c30d65c89d2c - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: state - type: label - localIdentifier: bbccd430176d428caed54c99afc9589e - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: state - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: top_10_customers - title: Top 10 Customers - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_top_10 - type: metric - localIdentifier: 77dc71bbac92412bac5f94284a5919df - title: Revenue / Top 10 - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 781952e728204dcf923142910cc22ae2 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - id: top_10_products - title: Top 10 Products - ldm: - datasets: - - aggregatedFacts: [] - attributes: - - description: Campaign channel id - id: campaign_channel_id - labels: [] - sourceColumn: campaign_channel_id - sourceColumnDataType: STRING - tags: - - Campaign channels - title: Campaign channel id - - description: Category - id: campaign_channels.category - labels: [] - sourceColumn: category - sourceColumnDataType: STRING - tags: - - Campaign channels - title: Category - - description: Type - id: type - labels: [] - sourceColumn: type - sourceColumnDataType: STRING - tags: - - Campaign channels - title: Type - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - path: - - demo - - campaign_channels - type: dataSource - description: Campaign channels - facts: - - description: Budget - id: budget - sourceColumn: budget - sourceColumnDataType: NUMERIC - tags: - - Campaign channels - title: Budget - - description: Spend - id: spend - sourceColumn: spend - sourceColumnDataType: NUMERIC - tags: - - Campaign channels - title: Spend - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - dataType: INT - target: - id: campaign_id - type: attribute - tags: - - Campaign channels - title: Campaign channels - - aggregatedFacts: - - description: Budget Agg - id: budget_agg - sourceColumn: budget - sourceColumnDataType: INT - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - tags: - - Campaign channels per category - attributes: [] - description: Campaign channels per categories - facts: [] - grain: [] - id: campaign_channels_per_category - precedence: 1 - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: campaign_channel_id - dataType: STRING - target: - id: campaign_channel_id - type: attribute - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - title: Campaign channels per category - - aggregatedFacts: [] - attributes: - - description: Campaign id - id: campaign_id - labels: [] - sourceColumn: campaign_id - sourceColumnDataType: INT - tags: - - Campaigns - title: Campaign id - - description: Campaign name - id: campaign_name - labels: [] - sourceColumn: campaign_name - sourceColumnDataType: STRING - tags: - - Campaigns - title: Campaign name - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaigns - path: - - demo - - campaigns - type: dataSource - description: Campaigns - facts: [] - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - tags: - - Campaigns - title: Campaigns - - aggregatedFacts: [] - attributes: - - description: Customer id - id: customer_id - labels: [] - sourceColumn: customer_id - sourceColumnDataType: INT - tags: - - Customers - title: Customer id - - description: Customer name - id: customer_name - labels: [] - sourceColumn: customer_name - sourceColumnDataType: STRING - tags: - - Customers - title: Customer name - - description: Region - id: region - labels: [] - sourceColumn: region - sourceColumnDataType: STRING - tags: - - Customers - title: Region - - description: State - id: state - labels: - - description: Location - id: geo__state__location - sourceColumn: geo__state__location - sourceColumnDataType: STRING - tags: - - Customers - title: Location - valueType: GEO - sourceColumn: state - sourceColumnDataType: STRING - tags: - - Customers - title: State - dataSourceTableId: - dataSourceId: demo-test-ds - id: customers - path: - - demo - - customers - type: dataSource - description: Customers - facts: [] - grain: - - id: customer_id - type: attribute - id: customers - references: [] - tags: - - Customers - title: Customers - - aggregatedFacts: [] - attributes: - - description: Order id - id: order_id - labels: [] - sourceColumn: order_id - sourceColumnDataType: STRING - tags: - - Order lines - title: Order id - - description: Order line id - id: order_line_id - labels: [] - sourceColumn: order_line_id - sourceColumnDataType: STRING - tags: - - Order lines - title: Order line id - - description: Order status - id: order_status - labels: [] - sourceColumn: order_status - sourceColumnDataType: STRING - tags: - - Order lines - title: Order status - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - path: - - demo - - order_lines - type: dataSource - description: Order lines - facts: - - description: Price - id: price - sourceColumn: price - sourceColumnDataType: NUMERIC - tags: - - Order lines - title: Price - - description: Quantity - id: quantity - sourceColumn: quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines - title: Quantity - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - dataType: INT - target: - id: campaign_id - type: attribute - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - dataType: INT - target: - id: customer_id - type: attribute - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - dataType: DATE - target: - id: date - type: date - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - dataType: INT - target: - id: product_id - type: attribute - tags: - - Order lines - title: Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region - type: workspaceDataFilter - - aggregatedFacts: [] - attributes: - - description: Product id - id: product_id - labels: [] - sourceColumn: product_id - sourceColumnDataType: INT - tags: - - Products - title: Product id - - description: Product name - id: product_name - labels: [] - sourceColumn: product_name - sourceColumnDataType: STRING - tags: - - Products - title: Product name - - description: Category - id: products.category - labels: [] - sourceColumn: category - sourceColumnDataType: STRING - tags: - - Products - title: Category - dataSourceTableId: - dataSourceId: demo-test-ds - id: products - path: - - demo - - products - type: dataSource - description: Products - facts: [] - grain: - - id: product_id - type: attribute - id: products - references: [] - tags: - - Products - title: Products - dateInstances: - - description: '' - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - tags: - - Date - title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '199' - Content-Type: - - application/json - DATE: *id001 - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo - id: demo - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_jacek?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 404 - message: Not Found - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '172' - Content-Type: - - application/problem+json - DATE: *id001 - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: fd8c50b808e49d4cd3765d2c064d07c2 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_jacek?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 404 - message: Not Found - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '172' - Content-Type: - - application/problem+json - DATE: *id001 - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 6b6a6bc22f2936dc49afcfe90546eeaa - - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces - body: - data: - id: demo_jacek - type: workspace - attributes: - name: Deno Jacek - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 201 - message: Created - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '198' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Deno Jacek - id: demo_jacek - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_jacek - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '772' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - workspaceDataFilters: - - columnName: wdf__region - id: wdf__region - title: Customer region - workspace: - id: demo - type: workspace - workspaceDataFilterSettings: - - filterValues: - - West - id: region_west - title: Region West - workspace: - id: demo_west - type: workspace - - columnName: wdf__region - id: wdf__region_demo_clone - title: Customer region - workspace: - id: demo_clone - type: workspace - workspaceDataFilterSettings: [] - - columnName: wdf__state - id: wdf__state - title: Customer state - workspace: - id: demo_west - type: workspace - workspaceDataFilterSettings: - - filterValues: - - California - id: region_west_california - title: Region West California - workspace: - id: demo_west_california - type: workspace - - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters - body: - workspaceDataFilters: - - columnName: wdf__region - id: wdf__region - title: Customer region - workspace: - id: demo - type: workspace - workspaceDataFilterSettings: - - filterValues: - - West - id: region_west - title: Region West - workspace: - id: demo_west - type: workspace - - columnName: wdf__region - id: wdf__region_demo_clone - title: Customer region - workspace: - id: demo_clone - type: workspace - workspaceDataFilterSettings: [] - - columnName: wdf__state - id: wdf__state - title: Customer state - workspace: - id: demo_west - type: workspace - workspaceDataFilterSettings: - - filterValues: - - California - id: region_west_california - title: Region West California - workspace: - id: demo_west_california - type: workspace - - columnName: wdf__region - id: wdf__region_demo_jacek - title: Customer region - workspace: - id: demo_jacek - type: workspace - workspaceDataFilterSettings: [] - headers: - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 204 - message: No Content - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' - - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_jacek - body: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: CAMPAIGN_CHANNEL_ID - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: CATEGORY - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: TYPE - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: BUDGET - title: Budget - sourceColumnDataType: NUMERIC - description: Budget - tags: - - Campaign channels - - id: spend - sourceColumn: SPEND - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: CAMPAIGN_CHANNELS - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_CHANNEL_ID - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: BUDGET - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: CAMPAIGN_ID - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: CAMPAIGN_NAME - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: CAMPAIGNS - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: CUSTOMER_ID - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: CUSTOMER_NAME - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: REGION - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: GEO__STATE__LOCATION - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - sourceColumn: STATE - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: CUSTOMERS - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: CUSTOMER_ID - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: DATE - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: PRODUCT_ID - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: ORDER_ID - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: ORDER_LINE_ID - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: ORDER_STATUS - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: PRICE - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: QUANTITY - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: ORDER_LINES - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region_demo_jacek - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: PRODUCT_ID - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: PRODUCT_NAME - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: CATEGORY - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: PRODUCTS - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date - analytics: - analyticalDashboards: - - content: - filterContextRef: - identifier: - id: campaign_name_filter - type: filterContext - layout: - type: IDashboardLayout - sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue - description: The first insight shows a breakdown of spend - by category and campaign. The second shows revenue per $ - spend, for each campaign, to demonstrate, how campaigns - are successful. - items: - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Campaign Spend - description: '' - ignoreDashboardFilters: [] - insight: - identifier: - id: campaign_spend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Revenue per $ vs Spend by Campaign - description: '' - ignoreDashboardFilters: [] - insight: - identifier: - id: revenue_per_usd_vs_spend_by_campaign - type: visualizationObject - drills: [] - properties: {} - version: '2' - id: campaign - title: Campaign - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - permissions: - - name: VIEW - assigneeRule: - type: allWorkspaceUsers - - content: - filterContextRef: - identifier: - id: campaign_name_filter - type: filterContext - layout: - sections: - - items: - - size: - xl: - gridWidth: 12 - type: IDashboardLayoutItem - widget: - description: '' - drills: [] - ignoreDashboardFilters: [] - insight: - identifier: - id: top_10_products - type: visualizationObject - properties: {} - title: DHO simple - type: insight - type: IDashboardLayoutSection - type: IDashboardLayout - plugins: - - plugin: - identifier: - id: dashboard_plugin_1 - type: dashboardPlugin - version: '2' - version: '2' - id: dashboard_plugin - title: Dashboard plugin - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - filterContextRef: - identifier: - id: region_filter - type: filterContext - layout: - type: IDashboardLayout - sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: top_10_products - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: revenue_trend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: customers_trend - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_categories_pie_chart - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_breakdown - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 6 - widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: product_saleability - type: visualizationObject - drills: [] - properties: {} - - type: IDashboardLayoutItem - size: - xl: - gridWidth: 12 - widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] - dateDataSet: - identifier: - id: date - type: dataset - insight: - identifier: - id: percent_revenue_per_product_by_customer_and_category - type: visualizationObject - drills: [] - properties: {} - version: '2' - id: product_and_category - title: Product & Category - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - analyticalDashboardExtensions: [] - attributeHierarchies: [] - dashboardPlugins: - - content: - url: https://www.example.com - version: '2' - id: dashboard_plugin_1 - title: dashboard_plugin_1 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: Testing record dashboard_plugin_1 - - content: - url: https://www.example.com - version: '2' - id: dashboard_plugin_2 - title: dashboard_plugin_2 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: Testing record dashboard_plugin_2 - filterContexts: - - content: - filters: - - dateFilter: - from: '0' - to: '0' - granularity: GDC.time.month - type: relative - - attributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d - filterElementsBy: [] - version: '2' - id: campaign_name_filter - title: filterContext - description: '' - - content: - filters: - - attributeFilter: - displayForm: - identifier: - id: region - type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af - filterElementsBy: [] - version: '2' - id: region_filter - title: filterContext - description: '' - metrics: - - content: - format: '#,##0' - maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - id: amount_of_active_customers - title: '# of Active Customers' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0' - maql: SELECT COUNT({attribute/order_id}) - id: amount_of_orders - title: '# of Orders' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0' - maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} - BY {attribute/customer_id}) > 10000 ' - id: amount_of_top_customers - title: '# of Top Customers' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.00' - maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} - IN ("Returned", "Canceled")) - id: amount_of_valid_orders - title: '# of Valid Orders' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - - content: - format: $#,##0 - maql: SELECT SUM({fact/spend}) - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT SUM({fact/price}*{fact/quantity}) - id: order_amount - title: Order Amount - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / {metric/total_revenue} - id: percent_revenue - title: '% Revenue' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ - \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_customers - title: '% Revenue from Top 10 Customers' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ - \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_customers - title: '% Revenue from Top 10% Customers' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ - \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_products - title: '% Revenue from Top 10% Products' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ - \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_products - title: '% Revenue from Top 10 Products' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, - ALL OTHER) - id: percent_revenue_in_category - title: '% Revenue in Category' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: '#,##0.0%' - maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - id: percent_revenue_per_product - title: '% Revenue per Product' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} - IN ("Returned", "Canceled")) - id: revenue - title: Revenue - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - description: '' - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - id: revenue-clothing - title: Revenue (Clothing) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( - "Electronics") - id: revenue-electronic - title: Revenue (Electronic) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - id: revenue-home - title: Revenue (Home) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - id: revenue-outdoor - title: Revenue (Outdoor) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0.0 - maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - id: revenue_per_customer - title: Revenue per Customer - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0.0 - maql: SELECT {metric/revenue} / {metric/campaign_spend} - id: revenue_per_dollar_spent - title: Revenue per Dollar Spent - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - id: revenue_top_10 - title: Revenue / Top 10 - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - id: revenue_top_10_percent - title: Revenue / Top 10% - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/revenue} BY ALL OTHER - id: total_revenue - title: Total Revenue - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - format: $#,##0 - maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - id: total_revenue-no_filters - title: Total Revenue (No Filters) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - visualizationObjects: - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: campaign_spend - type: metric - localIdentifier: d319bcb2d8c04442a684e3b3cd063381 - title: Campaign Spend - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: campaign_channels.category - type: label - localIdentifier: 291c085e7df8420db84117ca49f59c49 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: campaign_name - type: label - localIdentifier: d9dd143d647d4d148405a60ec2cf59bc - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: type - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_channels.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:treemap - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - alias: Active Customers - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: amount_of_active_customers - type: metric - localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 - title: '# of Active Customers' - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_per_customer - type: metric - localIdentifier: ec0606894b9f4897b7beaf1550608928 - title: Revenue per Customer - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 0de7d7f08af7480aa636857a26be72b6 - localIdentifier: view - filters: - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - properties: - controls: - colorMapping: - - color: - type: guid - value: '20' - id: 2ba0b87b59ca41a4b1530e81a5c1d081 - - color: - type: guid - value: '4' - id: ec0606894b9f4897b7beaf1550608928 - dualAxis: true - legend: - position: bottom - primaryChartType: column - secondaryChartType: line - secondary_yaxis: - measures: - - ec0606894b9f4897b7beaf1550608928 - xaxis: - name: - visible: false - rotation: auto - version: '2' - visualizationUrl: local:combo2 - id: customers_trend - title: Customers Trend - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: percent_revenue_per_product - type: metric - localIdentifier: 08d8346c1ce7438994b251991c0fbf65 - title: '% Revenue per Product' - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: b2350c06688b4da9b3833ebcce65527f - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: customer_name - type: label - localIdentifier: 7a4045fd00ac44579f52406df679435f - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 6a003ffd14994237ba64c4a02c488429 - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: {} - sorts: - - attributeSortItem: - attributeIdentifier: 7a4045fd00ac44579f52406df679435f - direction: asc - version: '2' - visualizationUrl: local:table - id: percent_revenue_per_product_by_customer_and_category - title: '% Revenue per Product by Customer and Category' - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: amount_of_active_customers - type: metric - localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 - title: '# of Active Customers' - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: region - type: label - localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: region - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - properties: - controls: - legend: - position: bottom - stackMeasuresToPercent: true - version: '2' - visualizationUrl: local:area - id: percentage_of_customers_by_region - title: Percentage of Customers by Region - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 590d332ef686468b8878ae41b23341c6 - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: b166c71091864312a14c7ae8ff886ffe - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: e920a50e0bbb49788df0aac53634c1cd - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:treemap - id: product_breakdown - title: Product Breakdown - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - computeRatio: true - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 162b857af49d45769bc12604a5c192b9 - title: '% Revenue' - format: '#,##0.00%' - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - dataLabels: - visible: auto - legend: - position: bottom - version: '2' - visualizationUrl: local:donut - id: product_categories_pie_chart - title: Product Categories Pie Chart - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - alias: Previous Period - definition: - popMeasureDefinition: - measureIdentifier: c82e025fa2db4afea9a600a424591dbe - popAttribute: - identifier: - id: date.year - type: attribute - localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop - - measure: - alias: This Period - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: c82e025fa2db4afea9a600a424591dbe - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -11 - granularity: GDC.time.month - to: 0 - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - stackMeasures: false - xaxis: - name: - visible: false - yaxis: - name: - visible: false - version: '2' - visualizationUrl: local:column - id: product_revenue_comparison-over_previous_period - title: Product Revenue Comparison (over previous period) - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - alias: Number of Orders - definition: - measureDefinition: - filters: [] - item: - identifier: - id: amount_of_orders - type: metric - localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 - title: '# of Orders' - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 - title: Revenue - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: d2a991bdd123448eb2be73d79f1180c4 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: - controls: - dataLabels: - visible: auto - grid: - enabled: true - version: '2' - visualizationUrl: local:scatter - id: product_saleability - title: Product Saleability - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - alias: Items Sold - definition: - measureDefinition: - aggregation: sum - filters: [] - item: - identifier: - id: quantity - type: fact - format: '#,##0.00' - localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 - title: Sum of Quantity - - measure: - definition: - measureDefinition: - aggregation: avg - filters: [] - item: - identifier: - id: price - type: fact - format: '#,##0.00' - localIdentifier: aa6391acccf1452f8011201aef9af492 - title: Avg Price - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: percent_revenue_in_category - type: metric - localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 - title: '% Revenue in Category' - - measure: - alias: Total Revenue - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 06bc6b3b9949466494e4f594c11f1bff - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: {} - sorts: - - attributeSortItem: - attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff - direction: asc - version: '2' - visualizationUrl: local:table - id: revenue_and_quantity_by_product_and_category - title: Revenue and Quantity by Product and Category - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 - localIdentifier: trend - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 - localIdentifier: segment - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - granularity: GDC.time.year - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:line - id: revenue_by_category_trend - title: Revenue by Category Trend - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c - title: Revenue - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 - localIdentifier: view - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - properties: {} - version: '2' - visualizationUrl: local:bar - id: revenue_by_product - title: Revenue by Product - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: campaign_spend - type: metric - localIdentifier: 13a50d811e474ac6808d8da7f4673b35 - title: Campaign Spend - localIdentifier: measures - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_per_dollar_spent - type: metric - localIdentifier: a0f15e82e6334280a44dbedc7d086e7c - title: Revenue per Dollar Spent - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: campaign_name - type: label - localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff - localIdentifier: attribute - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: campaign_name - type: label - notIn: - values: [] - properties: - controls: - xaxis: - min: '0' - yaxis: - min: '0' - version: '2' - visualizationUrl: local:scatter - id: revenue_per_usd_vs_spend_by_campaign - title: Revenue per $ vs Spend by Campaign - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: revenue - type: metric - localIdentifier: 60c854969a9c4c278ab596d99c222e92 - title: Revenue - localIdentifier: measures - - items: - - measure: - alias: Number of Orders - definition: - measureDefinition: - computeRatio: false - filters: [] - item: - identifier: - id: amount_of_orders - type: metric - localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 - title: '# of Orders' - localIdentifier: secondary_measures - - items: - - attribute: - displayForm: - identifier: - id: date.month - type: label - localIdentifier: 413ac374b65648fa96826ca01d47bdda - localIdentifier: view - filters: - - relativeDateFilter: - dataSet: - identifier: - id: date - type: dataset - from: -3 - granularity: GDC.time.quarter - to: 0 - properties: - controls: - dualAxis: true - legend: - position: bottom - primaryChartType: column - secondaryChartType: line - secondary_yaxis: - measures: - - c2fa7ef48cc54af99f8c280eb451e051 - xaxis: - name: - visible: false - rotation: auto - version: '2' - visualizationUrl: local:combo2 - id: revenue_trend - title: Revenue Trend - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_top_10 - type: metric - localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 - title: Revenue / Top 10 - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: customer_name - type: label - localIdentifier: f4e39e24f11e4827a191c30d65c89d2c - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: state - type: label - localIdentifier: bbccd430176d428caed54c99afc9589e - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: customer_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: state - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:bar - id: top_10_customers - title: Top 10 Customers - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - - content: - buckets: - - items: - - measure: - definition: - measureDefinition: - filters: [] - item: - identifier: - id: revenue_top_10 - type: metric - localIdentifier: 77dc71bbac92412bac5f94284a5919df - title: Revenue / Top 10 - localIdentifier: measures - - items: - - attribute: - displayForm: - identifier: - id: product_name - type: label - localIdentifier: 781952e728204dcf923142910cc22ae2 - localIdentifier: view - - items: - - attribute: - displayForm: - identifier: - id: products.category - type: label - localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 - localIdentifier: stack - filters: - - negativeAttributeFilter: - displayForm: - identifier: - id: product_name - type: label - notIn: - values: [] - - negativeAttributeFilter: - displayForm: - identifier: - id: products.category - type: label - notIn: - values: [] - properties: - controls: - legend: - position: bottom - version: '2' - visualizationUrl: local:bar id: top_10_products title: Top 10 Products - createdAt: 2026-03-25 09:16 - createdBy: - id: admin - type: user - exportDefinitions: [] - memoryItems: [] + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: CAMPAIGN_CHANNEL_ID + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: CATEGORY + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: TYPE + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CAMPAIGN_CHANNELS + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: BUDGET + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: SPEND + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_ID + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: BUDGET + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_CHANNEL_ID + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-bigquery-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: CAMPAIGN_ID + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: CAMPAIGN_NAME + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CAMPAIGNS + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: CUSTOMER_ID + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: CUSTOMER_NAME + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: REGION + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: GEO__STATE__LOCATION + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: STATE + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CUSTOMERS + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: ORDER_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: ORDER_LINE_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: ORDER_STATUS + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: ORDER_LINES + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: PRICE + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: QUANTITY + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_ID + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: CUSTOMER_ID + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: DATE + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: PRODUCT_ID + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region_demo_clone + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: PRODUCT_ID + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: PRODUCT_NAME + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: CATEGORY + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: PRODUCTS + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -10526,15 +4302,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_clone response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -10543,21 +4318,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/permissions body: null headers: Accept: @@ -10568,15 +4343,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/permissions response: - status: - code: 200 - message: OK + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '292' Content-Type: @@ -10589,58 +4381,40 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_jacek/permissions body: - permissions: + hierarchyPermissions: - assignee: id: demo2 type: user - name: ANALYZE + name: MANAGE - assignee: id: demoGroup type: userGroup - name: VIEW - hierarchyPermissions: + name: ANALYZE + permissions: - assignee: id: demo2 type: user - name: MANAGE + name: ANALYZE - assignee: id: demoGroup type: userGroup - name: ANALYZE + name: VIEW headers: Accept-Encoding: - br, gzip, deflate @@ -10650,15 +4424,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_clone/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -10667,21 +4440,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_jacek?include=workspaces body: null headers: Accept: @@ -10692,45 +4465,44 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: Demo (Clone) + id: demo_clone + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - - '217' + - '219' Content-Type: - application/json DATE: *id001 Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Deno Jacek - id: demo_jacek - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_jacek?include=workspaces + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/permissions body: null headers: Accept: @@ -10741,17 +4513,1905 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_clone response: - status: - code: 200 - message: OK + body: + string: + analytics: + analyticalDashboardExtensions: [] + analyticalDashboards: + - content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - header: + description: The first insight shows a breakdown of spend + by category and campaign. The second shows revenue per + $ spend, for each campaign, to demonstrate, how campaigns + are successful. + title: Spend breakdown and Revenue + items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: campaign_spend + type: visualizationObject + properties: {} + title: Campaign Spend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_per_usd_vs_spend_by_campaign + type: visualizationObject + properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: campaign + permissions: + - assigneeRule: + type: allWorkspaceUsers + name: VIEW + title: Campaign + - content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: DHO simple + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + plugins: + - plugin: + identifier: + id: dashboard_plugin_1 + type: dashboardPlugin + version: '2' + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: dashboard_plugin + title: Dashboard plugin + - content: + filterContextRef: + identifier: + id: region_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: Top 10 Products + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_trend + type: visualizationObject + properties: {} + title: Revenue Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: customers_trend + type: visualizationObject + properties: {} + title: Customers Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_categories_pie_chart + type: visualizationObject + properties: {} + title: Product Categories Pie Chart + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_breakdown + type: visualizationObject + properties: {} + title: Product Breakdown + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_saleability + type: visualizationObject + properties: {} + title: Product Saleability + type: insight + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: percent_revenue_per_product_by_customer_and_category + type: visualizationObject + properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: product_and_category + title: Product & Category + attributeHierarchies: [] + dashboardPlugins: + - content: + url: https://www.example.com + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_1 + id: dashboard_plugin_1 + title: dashboard_plugin_1 + - content: + url: https://www.example.com + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_2 + id: dashboard_plugin_2 + title: dashboard_plugin_2 + exportDefinitions: [] + filterContexts: + - content: + filters: + - dateFilter: + from: '0' + granularity: GDC.time.month + to: '0' + type: relative + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: campaign_name + type: label + filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true + version: '2' + description: '' + id: campaign_name_filter + title: filterContext + - content: + filters: + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: region + type: label + filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true + version: '2' + description: '' + id: region_filter + title: filterContext + memoryItems: [] + metrics: + - content: + format: '#,##0' + maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_active_customers + title: '# of Active Customers' + - content: + format: '#,##0' + maql: SELECT COUNT({attribute/order_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_orders + title: '# of Orders' + - content: + format: '#,##0' + maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT + {metric/revenue} BY {attribute/customer_id}) > 10000 ' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_top_customers + title: '# of Top Customers' + - content: + format: '#,##0.00' + maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} + IN ("Returned", "Canceled")) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: amount_of_valid_orders + title: '# of Valid Orders' + - content: + format: $#,##0 + maql: SELECT SUM({fact/spend}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: campaign_spend + title: Campaign Spend + - content: + format: $#,##0 + maql: SELECT SUM({fact/price}*{fact/quantity}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: order_amount + title: Order Amount + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / {metric/total_revenue} + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue + title: '% Revenue' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_customers + title: '% Revenue from Top 10 Customers' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_percent_customers + title: '% Revenue from Top 10% Customers' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_percent_products + title: '% Revenue from Top 10% Products' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_products + title: '% Revenue from Top 10 Products' + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, + ALL OTHER) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_in_category + title: '% Revenue in Category' + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL + {attribute/product_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_per_product + title: '% Revenue per Product' + - content: + format: $#,##0 + maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} + IN ("Returned", "Canceled")) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: revenue + title: Revenue + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ("Clothing") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-clothing + title: Revenue (Clothing) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ( "Electronics") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-electronic + title: Revenue (Electronic) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ("Home") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-home + title: Revenue (Home) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ("Outdoor") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-outdoor + title: Revenue (Outdoor) + - content: + format: $#,##0.0 + maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_customer + title: Revenue per Customer + - content: + format: $#,##0.0 + maql: SELECT {metric/revenue} / {metric/campaign_spend} + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_dollar_spent + title: Revenue per Dollar Spent + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_top_10 + title: Revenue / Top 10 + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_top_10_percent + title: Revenue / Top 10% + - content: + format: $#,##0 + maql: SELECT {metric/revenue} BY ALL OTHER + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: total_revenue + title: Total Revenue + - content: + format: $#,##0 + maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: total_revenue-no_filters + title: Total Revenue (No Filters) + parameters: [] + visualizationObjects: + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: d319bcb2d8c04442a684e3b3cd063381 + title: Campaign Spend + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_channels.category + type: label + localIdentifier: 291c085e7df8420db84117ca49f59c49 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: d9dd143d647d4d148405a60ec2cf59bc + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: type + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_channels.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: campaign_spend + title: Campaign Spend + - content: + buckets: + - items: + - measure: + alias: Active Customers + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 + title: '# of Active Customers' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_customer + type: metric + localIdentifier: ec0606894b9f4897b7beaf1550608928 + title: Revenue per Customer + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 0de7d7f08af7480aa636857a26be72b6 + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -12 + granularity: GDC.time.month + to: -1 + properties: + controls: + colorMapping: + - color: + type: guid + value: '20' + id: 2ba0b87b59ca41a4b1530e81a5c1d081 + - color: + type: guid + value: '4' + id: ec0606894b9f4897b7beaf1550608928 + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - ec0606894b9f4897b7beaf1550608928 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: customers_trend + title: Customers Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_per_product + type: metric + localIdentifier: 08d8346c1ce7438994b251991c0fbf65 + title: '% Revenue per Product' + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: b2350c06688b4da9b3833ebcce65527f + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: 7a4045fd00ac44579f52406df679435f + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 6a003ffd14994237ba64c4a02c488429 + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 7a4045fd00ac44579f52406df679435f + direction: asc + version: '2' + visualizationUrl: local:table + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_per_product_by_customer_and_category + title: '% Revenue per Product by Customer and Category' + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 + title: '# of Active Customers' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: region + type: label + localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: region + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + properties: + controls: + legend: + position: bottom + stackMeasuresToPercent: true + version: '2' + visualizationUrl: local:area + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percentage_of_customers_by_region + title: Percentage of Customers by Region + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 590d332ef686468b8878ae41b23341c6 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: b166c71091864312a14c7ae8ff886ffe + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: e920a50e0bbb49788df0aac53634c1cd + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_breakdown + title: Product Breakdown + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: true + filters: [] + item: + identifier: + id: revenue + type: metric + format: '#,##0.00%' + localIdentifier: 162b857af49d45769bc12604a5c192b9 + title: '% Revenue' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + legend: + position: bottom + version: '2' + visualizationUrl: local:donut + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_categories_pie_chart + title: Product Categories Pie Chart + - content: + buckets: + - items: + - measure: + alias: Previous Period + definition: + popMeasureDefinition: + measureIdentifier: c82e025fa2db4afea9a600a424591dbe + popAttribute: + identifier: + id: date.year + type: attribute + localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop + - measure: + alias: This Period + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: c82e025fa2db4afea9a600a424591dbe + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + stackMeasures: false + xaxis: + name: + visible: false + yaxis: + name: + visible: false + version: '2' + visualizationUrl: local:column + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_revenue_comparison-over_previous_period + title: Product Revenue Comparison (over previous period) + - content: + buckets: + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 + title: '# of Orders' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 + title: Revenue + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: d2a991bdd123448eb2be73d79f1180c4 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + grid: + enabled: true + version: '2' + visualizationUrl: local:scatter + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_saleability + title: Product Saleability + - content: + buckets: + - items: + - measure: + alias: Items Sold + definition: + measureDefinition: + aggregation: sum + filters: [] + item: + identifier: + id: quantity + type: fact + format: '#,##0.00' + localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 + title: Sum of Quantity + - measure: + definition: + measureDefinition: + aggregation: avg + filters: [] + item: + identifier: + id: price + type: fact + format: '#,##0.00' + localIdentifier: aa6391acccf1452f8011201aef9af492 + title: Avg Price + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_in_category + type: metric + localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 + title: '% Revenue in Category' + - measure: + alias: Total Revenue + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 06bc6b3b9949466494e4f594c11f1bff + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff + direction: asc + version: '2' + visualizationUrl: local:table + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_and_quantity_by_product_and_category + title: Revenue and Quantity by Product and Category + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 + localIdentifier: trend + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + granularity: GDC.time.year + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:line + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_by_category_trend + title: Revenue by Category Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_by_product + title: Revenue by Product + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: 13a50d811e474ac6808d8da7f4673b35 + title: Campaign Spend + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_dollar_spent + type: metric + localIdentifier: a0f15e82e6334280a44dbedc7d086e7c + title: Revenue per Dollar Spent + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + xaxis: + min: '0' + yaxis: + min: '0' + version: '2' + visualizationUrl: local:scatter + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_usd_vs_spend_by_campaign + title: Revenue per $ vs Spend by Campaign + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 60c854969a9c4c278ab596d99c222e92 + title: Revenue + localIdentifier: measures + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 + title: '# of Orders' + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 413ac374b65648fa96826ca01d47bdda + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -3 + granularity: GDC.time.quarter + to: 0 + properties: + controls: + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - c2fa7ef48cc54af99f8c280eb451e051 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_trend + title: Revenue Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: f4e39e24f11e4827a191c30d65c89d2c + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: state + type: label + localIdentifier: bbccd430176d428caed54c99afc9589e + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: state + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: top_10_customers + title: Top 10 Customers + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 77dc71bbac92412bac5f94284a5919df + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 781952e728204dcf923142910cc22ae2 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: top_10_products + title: Top 10 Products + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: CAMPAIGN_CHANNEL_ID + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: CATEGORY + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: TYPE + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CAMPAIGN_CHANNELS + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: BUDGET + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: SPEND + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_ID + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: BUDGET + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_CHANNEL_ID + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-bigquery-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: CAMPAIGN_ID + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: CAMPAIGN_NAME + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CAMPAIGNS + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: CUSTOMER_ID + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: CUSTOMER_NAME + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: REGION + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: GEO__STATE__LOCATION + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: STATE + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CUSTOMERS + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: ORDER_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: ORDER_LINE_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: ORDER_STATUS + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: ORDER_LINES + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: PRICE + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: QUANTITY + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_ID + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: CUSTOMER_ID + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: DATE + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: PRODUCT_ID + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region_demo_clone + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: PRODUCT_ID + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: PRODUCT_NAME + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: CATEGORY + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: PRODUCTS + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '292' + Content-Encoding: + - br Content-Type: - application/json DATE: *id001 @@ -10762,103 +6422,23 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_jacek/permissions - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: + X-Xss-Protection: + - 1; mode=block status: code: 200 message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '292' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: null headers: Accept: @@ -10869,40 +6449,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -10914,48 +6463,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -10998,7 +6547,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11010,145 +6559,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11160,7 +6709,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11170,7 +6719,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11183,19 +6732,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -11203,15 +6752,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -11221,7 +6770,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11230,7 +6779,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11240,7 +6789,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11250,7 +6799,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11260,7 +6809,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11269,7 +6818,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11278,7 +6827,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11288,7 +6837,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11298,7 +6847,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11308,7 +6857,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11318,7 +6867,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11328,7 +6877,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11338,7 +6887,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11348,7 +6897,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11359,7 +6908,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11369,7 +6918,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11379,7 +6928,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11389,7 +6938,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11398,7 +6947,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11407,7 +6956,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11416,7 +6965,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11425,7 +6974,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11434,7 +6983,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11443,12 +6992,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -11508,7 +7058,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11556,9 +7106,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -11584,7 +7134,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11663,7 +7213,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11722,7 +7272,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11779,7 +7329,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11797,9 +7347,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -11832,7 +7382,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11907,7 +7457,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -11964,7 +7514,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12063,7 +7613,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12119,7 +7669,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12158,7 +7708,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12214,7 +7764,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12282,7 +7832,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12339,7 +7889,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12396,7 +7946,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user @@ -12408,6 +7958,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -12416,6 +7967,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -12424,6 +7976,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -12441,6 +7994,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -12448,6 +8002,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -12465,6 +8020,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -12497,6 +8053,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -12511,6 +8068,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -12519,6 +8077,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -12546,6 +8105,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -12554,6 +8114,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -12562,6 +8123,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -12570,9 +8132,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -12605,6 +8169,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -12613,6 +8178,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -12621,6 +8187,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -12638,6 +8205,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -12645,6 +8213,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -12662,6 +8231,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -12672,6 +8242,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -12682,6 +8253,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -12692,6 +8264,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -12713,6 +8286,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -12721,6 +8295,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -12729,6 +8304,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -12767,58 +8343,38 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '199' + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo - id: demo - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces body: null headers: Accept: @@ -12829,193 +8385,90 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '219' - Content-Type: - - application/json - DATE: *id001 - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: - name: Demo (Clone) - id: demo_clone + name: Demo + id: demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces headers: Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + - max-age=5, private + Content-Length: + - '199' Content-Type: - application/json DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - - attributes: - name: Demo - id: demo - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo - type: workspace - - attributes: - name: Demo (Clone) - id: demo_clone - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone - type: workspace - - attributes: - name: Deno Jacek - id: demo_jacek - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_jacek - type: workspace - - attributes: - name: Demo West - id: demo_west - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west - relationships: - parent: - data: - id: demo - type: workspace - type: workspace - - attributes: - name: Demo West California - id: demo_west_california - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california - relationships: - parent: - data: - id: demo_west - type: workspace - type: workspace - included: - - attributes: - name: Demo - id: demo - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo - type: workspace - - attributes: - name: Demo West - id: demo_west - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone body: null headers: + Accept: + - application/json Accept-Encoding: - br, gzip, deflate X-GDC-VALIDATE-RELATIONS: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_jacek?include=workspaces response: - status: - code: 204 - message: No Content + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 0c3208d8d43b9585b8ad6e4372a57801 headers: Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + - max-age=5, private + Content-Length: + - '172' Content-Type: - - application/vnd.gooddata.api+json + - application/problem+json DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone?include=workspaces body: null headers: Accept: @@ -13026,15 +8479,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_jacek?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: c5d1e78800cce082e70891cf05afdc5f headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -13043,32 +8500,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 7c909299b72f95d231cb97a19693e4e3 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_clone - type: workspace attributes: - name: Demo (Clone) + name: Deno Jacek + id: demo_jacek + type: workspace headers: Accept: - application/json @@ -13080,17 +8532,23 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: Deno Jacek + id: demo_jacek + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_jacek headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '200' + - '198' Content-Type: - application/json DATE: *id001 @@ -13101,28 +8559,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo (Clone) - id: demo_clone - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_clone + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -13133,37 +8584,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '772' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -13182,10 +8605,10 @@ interactions: id: demo_west type: workspace - columnName: wdf__region - id: wdf__region_demo_jacek + id: wdf__region_demo_clone title: Customer region workspace: - id: demo_jacek + id: demo_clone type: workspace workspaceDataFilterSettings: [] - columnName: wdf__state @@ -13202,9 +8625,36 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '772' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: - columnName: wdf__region @@ -13222,10 +8672,10 @@ interactions: id: demo_west type: workspace - columnName: wdf__region - id: wdf__region_demo_jacek + id: wdf__region_demo_clone title: Customer region workspace: - id: demo_jacek + id: demo_clone type: workspace workspaceDataFilterSettings: [] - columnName: wdf__state @@ -13243,10 +8693,10 @@ interactions: id: demo_west_california type: workspace - columnName: wdf__region - id: wdf__region_demo_clone + id: wdf__region_demo_jacek title: Customer region workspace: - id: demo_clone + id: demo_jacek type: workspace workspaceDataFilterSettings: [] headers: @@ -13258,15 +8708,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -13275,222 +8724,1784 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_clone body: + analytics: + analyticalDashboardExtensions: [] + analyticalDashboards: + - content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - header: + description: The first insight shows a breakdown of spend + by category and campaign. The second shows revenue per $ + spend, for each campaign, to demonstrate, how campaigns + are successful. + title: Spend breakdown and Revenue + items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: campaign_spend + type: visualizationObject + properties: {} + title: Campaign Spend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_per_usd_vs_spend_by_campaign + type: visualizationObject + properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: campaign + permissions: + - assigneeRule: + type: allWorkspaceUsers + name: VIEW + title: Campaign + - content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: DHO simple + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + plugins: + - plugin: + identifier: + id: dashboard_plugin_1 + type: dashboardPlugin + version: '2' + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: dashboard_plugin + title: Dashboard plugin + - content: + filterContextRef: + identifier: + id: region_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: Top 10 Products + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_trend + type: visualizationObject + properties: {} + title: Revenue Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: customers_trend + type: visualizationObject + properties: {} + title: Customers Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_categories_pie_chart + type: visualizationObject + properties: {} + title: Product Categories Pie Chart + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_breakdown + type: visualizationObject + properties: {} + title: Product Breakdown + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_saleability + type: visualizationObject + properties: {} + title: Product Saleability + type: insight + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: percent_revenue_per_product_by_customer_and_category + type: visualizationObject + properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: product_and_category + title: Product & Category + attributeHierarchies: [] + dashboardPlugins: + - content: + url: https://www.example.com + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_1 + id: dashboard_plugin_1 + title: dashboard_plugin_1 + - content: + url: https://www.example.com + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_2 + id: dashboard_plugin_2 + title: dashboard_plugin_2 + exportDefinitions: [] + filterContexts: + - content: + filters: + - dateFilter: + from: '0' + granularity: GDC.time.month + to: '0' + type: relative + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: campaign_name + type: label + filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true + version: '2' + description: '' + id: campaign_name_filter + title: filterContext + - content: + filters: + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: region + type: label + filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true + version: '2' + description: '' + id: region_filter + title: filterContext + memoryItems: [] + metrics: + - content: + format: '#,##0' + maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_active_customers + title: '# of Active Customers' + - content: + format: '#,##0' + maql: SELECT COUNT({attribute/order_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_orders + title: '# of Orders' + - content: + format: '#,##0' + maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} + BY {attribute/customer_id}) > 10000 ' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_top_customers + title: '# of Top Customers' + - content: + format: '#,##0.00' + maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} + IN ("Returned", "Canceled")) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: amount_of_valid_orders + title: '# of Valid Orders' + - content: + format: $#,##0 + maql: SELECT SUM({fact/spend}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: campaign_spend + title: Campaign Spend + - content: + format: $#,##0 + maql: SELECT SUM({fact/price}*{fact/quantity}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: order_amount + title: Order Amount + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / {metric/total_revenue} + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue + title: '% Revenue' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_customers + title: '% Revenue from Top 10 Customers' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_percent_customers + title: '% Revenue from Top 10% Customers' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_percent_products + title: '% Revenue from Top 10% Products' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_products + title: '% Revenue from Top 10 Products' + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, + ALL OTHER) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_in_category + title: '% Revenue in Category' + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_per_product + title: '% Revenue per Product' + - content: + format: $#,##0 + maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} + IN ("Returned", "Canceled")) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: revenue + title: Revenue + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-clothing + title: Revenue (Clothing) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( + "Electronics") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-electronic + title: Revenue (Electronic) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-home + title: Revenue (Home) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-outdoor + title: Revenue (Outdoor) + - content: + format: $#,##0.0 + maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_customer + title: Revenue per Customer + - content: + format: $#,##0.0 + maql: SELECT {metric/revenue} / {metric/campaign_spend} + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_dollar_spent + title: Revenue per Dollar Spent + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_top_10 + title: Revenue / Top 10 + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_top_10_percent + title: Revenue / Top 10% + - content: + format: $#,##0 + maql: SELECT {metric/revenue} BY ALL OTHER + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: total_revenue + title: Total Revenue + - content: + format: $#,##0 + maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: total_revenue-no_filters + title: Total Revenue (No Filters) + parameters: [] + visualizationObjects: + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: d319bcb2d8c04442a684e3b3cd063381 + title: Campaign Spend + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_channels.category + type: label + localIdentifier: 291c085e7df8420db84117ca49f59c49 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: d9dd143d647d4d148405a60ec2cf59bc + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: type + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_channels.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: campaign_spend + title: Campaign Spend + - content: + buckets: + - items: + - measure: + alias: Active Customers + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 + title: '# of Active Customers' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_customer + type: metric + localIdentifier: ec0606894b9f4897b7beaf1550608928 + title: Revenue per Customer + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 0de7d7f08af7480aa636857a26be72b6 + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -12 + granularity: GDC.time.month + to: -1 + properties: + controls: + colorMapping: + - color: + type: guid + value: '20' + id: 2ba0b87b59ca41a4b1530e81a5c1d081 + - color: + type: guid + value: '4' + id: ec0606894b9f4897b7beaf1550608928 + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - ec0606894b9f4897b7beaf1550608928 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: customers_trend + title: Customers Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_per_product + type: metric + localIdentifier: 08d8346c1ce7438994b251991c0fbf65 + title: '% Revenue per Product' + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: b2350c06688b4da9b3833ebcce65527f + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: 7a4045fd00ac44579f52406df679435f + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 6a003ffd14994237ba64c4a02c488429 + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 7a4045fd00ac44579f52406df679435f + direction: asc + version: '2' + visualizationUrl: local:table + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_per_product_by_customer_and_category + title: '% Revenue per Product by Customer and Category' + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 + title: '# of Active Customers' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: region + type: label + localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: region + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + properties: + controls: + legend: + position: bottom + stackMeasuresToPercent: true + version: '2' + visualizationUrl: local:area + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percentage_of_customers_by_region + title: Percentage of Customers by Region + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 590d332ef686468b8878ae41b23341c6 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: b166c71091864312a14c7ae8ff886ffe + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: e920a50e0bbb49788df0aac53634c1cd + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_breakdown + title: Product Breakdown + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: true + filters: [] + item: + identifier: + id: revenue + type: metric + format: '#,##0.00%' + localIdentifier: 162b857af49d45769bc12604a5c192b9 + title: '% Revenue' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + legend: + position: bottom + version: '2' + visualizationUrl: local:donut + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_categories_pie_chart + title: Product Categories Pie Chart + - content: + buckets: + - items: + - measure: + alias: Previous Period + definition: + popMeasureDefinition: + measureIdentifier: c82e025fa2db4afea9a600a424591dbe + popAttribute: + identifier: + id: date.year + type: attribute + localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop + - measure: + alias: This Period + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: c82e025fa2db4afea9a600a424591dbe + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + stackMeasures: false + xaxis: + name: + visible: false + yaxis: + name: + visible: false + version: '2' + visualizationUrl: local:column + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_revenue_comparison-over_previous_period + title: Product Revenue Comparison (over previous period) + - content: + buckets: + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 + title: '# of Orders' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 + title: Revenue + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: d2a991bdd123448eb2be73d79f1180c4 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + grid: + enabled: true + version: '2' + visualizationUrl: local:scatter + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_saleability + title: Product Saleability + - content: + buckets: + - items: + - measure: + alias: Items Sold + definition: + measureDefinition: + aggregation: sum + filters: [] + item: + identifier: + id: quantity + type: fact + format: '#,##0.00' + localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 + title: Sum of Quantity + - measure: + definition: + measureDefinition: + aggregation: avg + filters: [] + item: + identifier: + id: price + type: fact + format: '#,##0.00' + localIdentifier: aa6391acccf1452f8011201aef9af492 + title: Avg Price + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_in_category + type: metric + localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 + title: '% Revenue in Category' + - measure: + alias: Total Revenue + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 06bc6b3b9949466494e4f594c11f1bff + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff + direction: asc + version: '2' + visualizationUrl: local:table + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_and_quantity_by_product_and_category + title: Revenue and Quantity by Product and Category + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 + localIdentifier: trend + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + granularity: GDC.time.year + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:line + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_by_category_trend + title: Revenue by Category Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_by_product + title: Revenue by Product + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: 13a50d811e474ac6808d8da7f4673b35 + title: Campaign Spend + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_dollar_spent + type: metric + localIdentifier: a0f15e82e6334280a44dbedc7d086e7c + title: Revenue per Dollar Spent + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + xaxis: + min: '0' + yaxis: + min: '0' + version: '2' + visualizationUrl: local:scatter + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_usd_vs_spend_by_campaign + title: Revenue per $ vs Spend by Campaign + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 60c854969a9c4c278ab596d99c222e92 + title: Revenue + localIdentifier: measures + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 + title: '# of Orders' + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 413ac374b65648fa96826ca01d47bdda + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -3 + granularity: GDC.time.quarter + to: 0 + properties: + controls: + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - c2fa7ef48cc54af99f8c280eb451e051 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_trend + title: Revenue Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: f4e39e24f11e4827a191c30d65c89d2c + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: state + type: label + localIdentifier: bbccd430176d428caed54c99afc9589e + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: state + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: top_10_customers + title: Top 10 Customers + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 77dc71bbac92412bac5f94284a5919df + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 781952e728204dcf923142910cc22ae2 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: top_10_products + title: Top 10 Products ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: CAMPAIGN_ID - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: CAMPAIGN_CHANNEL_ID - title: Campaign channel id sourceColumnDataType: STRING - description: Campaign channel id tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: CATEGORY - title: Category sourceColumnDataType: STRING - description: Category tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: TYPE - title: Type sourceColumnDataType: STRING - description: Type tags: - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: CAMPAIGN_CHANNELS + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: BUDGET - title: Budget sourceColumnDataType: NUMERIC - description: Budget tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: SPEND - title: Spend sourceColumnDataType: NUMERIC - description: Spend tags: - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: CAMPAIGN_CHANNELS - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: CAMPAIGN_CHANNEL_ID + - column: CAMPAIGN_ID + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: BUDGET + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - sourceColumnDataType: INT - description: Budget Agg tags: - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_CHANNEL_ID + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: - dataSourceId: demo-bigquery-ds + dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: CAMPAIGN_ID - title: Campaign id sourceColumnDataType: INT - description: Campaign id tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: CAMPAIGN_NAME - title: Campaign name sourceColumnDataType: STRING - description: Campaign name tags: - Campaigns - facts: [] - aggregatedFacts: [] + title: Campaign name dataSourceTableId: - dataSourceId: demo-bigquery-ds + dataSourceId: demo-test-ds id: CAMPAIGNS - type: dataSource path: - demo - campaigns - tags: - - Campaigns - - grain: - - id: customer_id + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - description: Customers + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: CUSTOMER_ID - title: Customer id sourceColumnDataType: INT - description: Customer id tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: CUSTOMER_NAME - title: Customer name sourceColumnDataType: STRING - description: Customer name tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: REGION - title: Region sourceColumnDataType: STRING - description: Region tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: GEO__STATE__LOCATION - title: Location sourceColumnDataType: STRING - description: Location tags: - Customers + title: Location valueType: GEO sourceColumn: STATE - title: State sourceColumnDataType: STRING - description: State tags: - Customers - facts: [] - aggregatedFacts: [] + title: State dataSourceTableId: - dataSourceId: demo-bigquery-ds + dataSourceId: demo-test-ds id: CUSTOMERS - type: dataSource path: - demo - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: ORDER_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: ORDER_LINE_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: ORDER_STATUS + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: ORDER_LINES + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: PRICE + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: QUANTITY + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -13501,92 +10512,47 @@ interactions: multivalue: false sources: - column: CAMPAIGN_ID + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: CUSTOMER_ID + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: DATE + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: PRODUCT_ID + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: ORDER_ID - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: ORDER_LINE_ID - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: ORDER_STATUS - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: PRICE - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: QUANTITY - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-bigquery-ds - id: ORDER_LINES - type: dataSource - path: - - demo - - order_lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -13596,53 +10562,57 @@ interactions: - filterColumn: wdf__region filterColumnDataType: STRING filterId: - id: wdf__region_demo_clone + id: wdf__region_demo_jacek type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: PRODUCT_ID - title: Product id sourceColumnDataType: INT - description: Product id tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: PRODUCT_NAME - title: Product name sourceColumnDataType: STRING - description: Product name tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: CATEGORY - title: Category sourceColumnDataType: STRING - description: Category tags: - Products - facts: [] - aggregatedFacts: [] + title: Category dataSourceTableId: - dataSourceId: demo-bigquery-ds + dataSourceId: demo-test-ds id: PRODUCTS - type: dataSource path: - demo - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -13652,11 +10622,2795 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + headers: + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_jacek + response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/permissions + response: + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '292' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW + headers: + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_jacek/permissions + response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_jacek?include=workspaces + response: + body: + string: + data: + attributes: + name: Deno Jacek + id: demo_jacek + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_jacek?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '217' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/permissions + response: + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '292' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_jacek/permissions + response: + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '292' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo + response: + body: + string: + analytics: + analyticalDashboardExtensions: [] + analyticalDashboards: + - content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - header: + description: The first insight shows a breakdown of spend + by category and campaign. The second shows revenue per + $ spend, for each campaign, to demonstrate, how campaigns + are successful. + title: Spend breakdown and Revenue + items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: campaign_spend + type: visualizationObject + properties: {} + title: Campaign Spend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_per_usd_vs_spend_by_campaign + type: visualizationObject + properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: campaign + permissions: + - assigneeRule: + type: allWorkspaceUsers + name: VIEW + title: Campaign + - content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: DHO simple + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + plugins: + - plugin: + identifier: + id: dashboard_plugin_1 + type: dashboardPlugin + version: '2' + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: dashboard_plugin + title: Dashboard plugin + - content: + filterContextRef: + identifier: + id: region_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: Top 10 Products + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_trend + type: visualizationObject + properties: {} + title: Revenue Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: customers_trend + type: visualizationObject + properties: {} + title: Customers Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_categories_pie_chart + type: visualizationObject + properties: {} + title: Product Categories Pie Chart + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_breakdown + type: visualizationObject + properties: {} + title: Product Breakdown + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_saleability + type: visualizationObject + properties: {} + title: Product Saleability + type: insight + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: percent_revenue_per_product_by_customer_and_category + type: visualizationObject + properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: product_and_category + title: Product & Category + attributeHierarchies: [] + dashboardPlugins: + - content: + url: https://www.example.com + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_1 + id: dashboard_plugin_1 + title: dashboard_plugin_1 + - content: + url: https://www.example.com + version: '2' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_2 + id: dashboard_plugin_2 + title: dashboard_plugin_2 + exportDefinitions: [] + filterContexts: + - content: + filters: + - dateFilter: + from: '0' + granularity: GDC.time.month + to: '0' + type: relative + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: campaign_name + type: label + filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true + version: '2' + description: '' + id: campaign_name_filter + title: filterContext + - content: + filters: + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: region + type: label + filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true + version: '2' + description: '' + id: region_filter + title: filterContext + memoryItems: [] + metrics: + - content: + format: '#,##0' + maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_active_customers + title: '# of Active Customers' + - content: + format: '#,##0' + maql: SELECT COUNT({attribute/order_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_orders + title: '# of Orders' + - content: + format: '#,##0' + maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT + {metric/revenue} BY {attribute/customer_id}) > 10000 ' + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: amount_of_top_customers + title: '# of Top Customers' + - content: + format: '#,##0.00' + maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} + IN ("Returned", "Canceled")) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: amount_of_valid_orders + title: '# of Valid Orders' + - content: + format: $#,##0 + maql: SELECT SUM({fact/spend}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: campaign_spend + title: Campaign Spend + - content: + format: $#,##0 + maql: SELECT SUM({fact/price}*{fact/quantity}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: order_amount + title: Order Amount + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / {metric/total_revenue} + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue + title: '% Revenue' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_customers + title: '% Revenue from Top 10 Customers' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_percent_customers + title: '% Revenue from Top 10% Customers' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_percent_products + title: '% Revenue from Top 10% Products' + - content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_from_top_10_products + title: '% Revenue from Top 10 Products' + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, + ALL OTHER) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_in_category + title: '% Revenue in Category' + - content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL + {attribute/product_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_per_product + title: '% Revenue per Product' + - content: + format: $#,##0 + maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} + IN ("Returned", "Canceled")) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + description: '' + id: revenue + title: Revenue + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ("Clothing") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-clothing + title: Revenue (Clothing) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ( "Electronics") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-electronic + title: Revenue (Electronic) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ("Home") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-home + title: Revenue (Home) + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN + ("Outdoor") + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue-outdoor + title: Revenue (Outdoor) + - content: + format: $#,##0.0 + maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_customer + title: Revenue per Customer + - content: + format: $#,##0.0 + maql: SELECT {metric/revenue} / {metric/campaign_spend} + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_dollar_spent + title: Revenue per Dollar Spent + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_top_10 + title: Revenue / Top 10 + - content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_top_10_percent + title: Revenue / Top 10% + - content: + format: $#,##0 + maql: SELECT {metric/revenue} BY ALL OTHER + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: total_revenue + title: Total Revenue + - content: + format: $#,##0 + maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: total_revenue-no_filters + title: Total Revenue (No Filters) + parameters: [] + visualizationObjects: + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: d319bcb2d8c04442a684e3b3cd063381 + title: Campaign Spend + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_channels.category + type: label + localIdentifier: 291c085e7df8420db84117ca49f59c49 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: d9dd143d647d4d148405a60ec2cf59bc + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: type + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_channels.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: campaign_spend + title: Campaign Spend + - content: + buckets: + - items: + - measure: + alias: Active Customers + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 + title: '# of Active Customers' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_customer + type: metric + localIdentifier: ec0606894b9f4897b7beaf1550608928 + title: Revenue per Customer + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 0de7d7f08af7480aa636857a26be72b6 + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -12 + granularity: GDC.time.month + to: -1 + properties: + controls: + colorMapping: + - color: + type: guid + value: '20' + id: 2ba0b87b59ca41a4b1530e81a5c1d081 + - color: + type: guid + value: '4' + id: ec0606894b9f4897b7beaf1550608928 + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - ec0606894b9f4897b7beaf1550608928 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: customers_trend + title: Customers Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_per_product + type: metric + localIdentifier: 08d8346c1ce7438994b251991c0fbf65 + title: '% Revenue per Product' + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: b2350c06688b4da9b3833ebcce65527f + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: 7a4045fd00ac44579f52406df679435f + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 6a003ffd14994237ba64c4a02c488429 + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 7a4045fd00ac44579f52406df679435f + direction: asc + version: '2' + visualizationUrl: local:table + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percent_revenue_per_product_by_customer_and_category + title: '% Revenue per Product by Customer and Category' + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 + title: '# of Active Customers' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: region + type: label + localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: region + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + properties: + controls: + legend: + position: bottom + stackMeasuresToPercent: true + version: '2' + visualizationUrl: local:area + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: percentage_of_customers_by_region + title: Percentage of Customers by Region + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 590d332ef686468b8878ae41b23341c6 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: b166c71091864312a14c7ae8ff886ffe + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: e920a50e0bbb49788df0aac53634c1cd + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_breakdown + title: Product Breakdown + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: true + filters: [] + item: + identifier: + id: revenue + type: metric + format: '#,##0.00%' + localIdentifier: 162b857af49d45769bc12604a5c192b9 + title: '% Revenue' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + legend: + position: bottom + version: '2' + visualizationUrl: local:donut + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_categories_pie_chart + title: Product Categories Pie Chart + - content: + buckets: + - items: + - measure: + alias: Previous Period + definition: + popMeasureDefinition: + measureIdentifier: c82e025fa2db4afea9a600a424591dbe + popAttribute: + identifier: + id: date.year + type: attribute + localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop + - measure: + alias: This Period + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: c82e025fa2db4afea9a600a424591dbe + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + stackMeasures: false + xaxis: + name: + visible: false + yaxis: + name: + visible: false + version: '2' + visualizationUrl: local:column + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_revenue_comparison-over_previous_period + title: Product Revenue Comparison (over previous period) + - content: + buckets: + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 + title: '# of Orders' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 + title: Revenue + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: d2a991bdd123448eb2be73d79f1180c4 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + grid: + enabled: true + version: '2' + visualizationUrl: local:scatter + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: product_saleability + title: Product Saleability + - content: + buckets: + - items: + - measure: + alias: Items Sold + definition: + measureDefinition: + aggregation: sum + filters: [] + item: + identifier: + id: quantity + type: fact + format: '#,##0.00' + localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 + title: Sum of Quantity + - measure: + definition: + measureDefinition: + aggregation: avg + filters: [] + item: + identifier: + id: price + type: fact + format: '#,##0.00' + localIdentifier: aa6391acccf1452f8011201aef9af492 + title: Avg Price + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_in_category + type: metric + localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 + title: '% Revenue in Category' + - measure: + alias: Total Revenue + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 06bc6b3b9949466494e4f594c11f1bff + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff + direction: asc + version: '2' + visualizationUrl: local:table + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_and_quantity_by_product_and_category + title: Revenue and Quantity by Product and Category + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 + localIdentifier: trend + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + granularity: GDC.time.year + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:line + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_by_category_trend + title: Revenue by Category Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_by_product + title: Revenue by Product + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: 13a50d811e474ac6808d8da7f4673b35 + title: Campaign Spend + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_dollar_spent + type: metric + localIdentifier: a0f15e82e6334280a44dbedc7d086e7c + title: Revenue per Dollar Spent + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + xaxis: + min: '0' + yaxis: + min: '0' + version: '2' + visualizationUrl: local:scatter + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_per_usd_vs_spend_by_campaign + title: Revenue per $ vs Spend by Campaign + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 60c854969a9c4c278ab596d99c222e92 + title: Revenue + localIdentifier: measures + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 + title: '# of Orders' + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 413ac374b65648fa96826ca01d47bdda + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -3 + granularity: GDC.time.quarter + to: 0 + properties: + controls: + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - c2fa7ef48cc54af99f8c280eb451e051 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: revenue_trend + title: Revenue Trend + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: f4e39e24f11e4827a191c30d65c89d2c + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: state + type: label + localIdentifier: bbccd430176d428caed54c99afc9589e + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: state + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: top_10_customers + title: Top 10 Customers + - content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 77dc71bbac92412bac5f94284a5919df + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 781952e728204dcf923142910cc22ae2 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar + createdAt: 2026-04-01 14:34 + createdBy: + id: admin + type: user + id: top_10_products + title: Top 10 Products + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces + response: + body: + string: + data: + attributes: + name: Demo + id: demo + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '199' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces + response: + body: + string: + data: + attributes: + name: Demo (Clone) + id: demo_clone + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '219' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: + body: + string: + data: + - attributes: + name: Demo + id: demo + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo + type: workspace + - attributes: + name: Demo (Clone) + id: demo_clone + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_clone + type: workspace + - attributes: + name: Deno Jacek + id: demo_jacek + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_jacek + type: workspace + - attributes: + name: Demo West + id: demo_west + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_west + relationships: + parent: + data: + id: demo + type: workspace + type: workspace + - attributes: + name: Demo West California + id: demo_west_california + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california + relationships: + parent: + data: + id: demo_west + type: workspace + type: workspace + included: + - attributes: + name: Demo + id: demo + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo + type: workspace + - attributes: + name: Demo West + id: demo_west + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_west + type: workspace + links: + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '298' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo_clone + response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_clone?include=workspaces + response: + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 58384d10fbfb88948b7f845f49ef125e + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '172' + Content-Type: + - application/problem+json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found + - request: + body: + data: + attributes: + name: Demo (Clone) + id: demo_clone + type: workspace + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces + response: + body: + string: + data: + attributes: + name: Demo (Clone) + id: demo_clone + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_clone + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '200' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters + response: + body: + string: + workspaceDataFilters: + - columnName: wdf__region + id: wdf__region + title: Customer region + workspace: + id: demo + type: workspace + workspaceDataFilterSettings: + - filterValues: + - West + id: region_west + title: Region West + workspace: + id: demo_west + type: workspace + - columnName: wdf__region + id: wdf__region_demo_jacek + title: Customer region + workspace: + id: demo_jacek + type: workspace + workspaceDataFilterSettings: [] + - columnName: wdf__state + id: wdf__state + title: Customer state + workspace: + id: demo_west + type: workspace + workspaceDataFilterSettings: + - filterValues: + - California + id: region_west_california + title: Region West California + workspace: + id: demo_west_california + type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '772' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: + workspaceDataFilters: + - columnName: wdf__region + id: wdf__region + title: Customer region + workspace: + id: demo + type: workspace + workspaceDataFilterSettings: + - filterValues: + - West + id: region_west + title: Region West + workspace: + id: demo_west + type: workspace + - columnName: wdf__region + id: wdf__region_demo_jacek + title: Customer region + workspace: + id: demo_jacek + type: workspace + workspaceDataFilterSettings: [] + - columnName: wdf__state + id: wdf__state + title: Customer state + workspace: + id: demo_west + type: workspace + workspaceDataFilterSettings: + - filterValues: + - California + id: region_west_california + title: Region West California + workspace: + id: demo_west_california + type: workspace + - columnName: wdf__region + id: wdf__region_demo_clone + title: Customer region + workspace: + id: demo_clone + type: workspace + workspaceDataFilterSettings: [] + headers: + Accept-Encoding: + - br, gzip, deflate + Content-Type: + - application/json + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters + response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content + - request: + body: analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -13664,58 +13418,58 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -13748,452 +13502,454 @@ interactions: type: dashboardPlugin version: '2' version: '2' - id: dashboard_plugin - title: Dashboard plugin - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: dashboard_plugin + title: Dashboard plugin - content: filterContextRef: identifier: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: product_and_category - title: Product & Category - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' - analyticalDashboardExtensions: [] + id: product_and_category + title: Product & Category attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' - id: dashboard_plugin_1 - title: dashboard_plugin_1 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: Testing record dashboard_plugin_1 + id: dashboard_plugin_1 + title: dashboard_plugin_1 - content: url: https://www.example.com version: '2' - id: dashboard_plugin_2 - title: dashboard_plugin_2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: Testing record dashboard_plugin_2 + id: dashboard_plugin_2 + title: dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - id: amount_of_active_customers - title: '# of Active Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: amount_of_active_customers + title: '# of Active Customers' - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - id: amount_of_orders - title: '# of Orders' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: amount_of_orders + title: '# of Orders' - content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - id: amount_of_top_customers - title: '# of Top Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: amount_of_top_customers + title: '# of Top Customers' - content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - id: amount_of_valid_orders - title: '# of Valid Orders' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' + id: amount_of_valid_orders + title: '# of Valid Orders' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: campaign_spend + title: Campaign Spend - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - id: order_amount - title: Order Amount - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: order_amount + title: Order Amount - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - id: percent_revenue - title: '% Revenue' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue + title: '% Revenue' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_customers - title: '% Revenue from Top 10 Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_customers + title: '% Revenue from Top 10 Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_customers - title: '% Revenue from Top 10% Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_percent_customers + title: '% Revenue from Top 10% Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_products - title: '% Revenue from Top 10% Products' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_percent_products + title: '% Revenue from Top 10% Products' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_products - title: '% Revenue from Top 10 Products' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_from_top_10_products + title: '% Revenue from Top 10 Products' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - id: percent_revenue_in_category - title: '% Revenue in Category' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_in_category + title: '% Revenue in Category' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - id: percent_revenue_per_product - title: '% Revenue per Product' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_per_product + title: '% Revenue per Product' - content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - id: revenue - title: Revenue - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user description: '' + id: revenue + title: Revenue - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - id: revenue-clothing - title: Revenue (Clothing) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-clothing + title: Revenue (Clothing) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - id: revenue-electronic - title: Revenue (Electronic) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-electronic + title: Revenue (Electronic) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - id: revenue-home - title: Revenue (Home) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-home + title: Revenue (Home) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - id: revenue-outdoor - title: Revenue (Outdoor) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue-outdoor + title: Revenue (Outdoor) - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - id: revenue_per_customer - title: Revenue per Customer - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_per_customer + title: Revenue per Customer - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - id: revenue_per_dollar_spent - title: Revenue per Dollar Spent - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_per_dollar_spent + title: Revenue per Dollar Spent - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - id: revenue_top_10 - title: Revenue / Top 10 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_top_10 + title: Revenue / Top 10 - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - id: revenue_top_10_percent - title: Revenue / Top 10% - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_top_10_percent + title: Revenue / Top 10% - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - id: total_revenue - title: Total Revenue - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: total_revenue + title: Total Revenue - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - id: total_revenue-no_filters - title: Total Revenue (No Filters) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: total_revenue-no_filters + title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -14253,12 +14009,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: campaign_spend + title: Campaign Spend - content: buckets: - items: @@ -14301,9 +14057,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -14329,12 +14085,12 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - id: customers_trend - title: Customers Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: customers_trend + title: Customers Trend - content: buckets: - items: @@ -14408,12 +14164,12 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - id: percent_revenue_per_product_by_customer_and_category - title: '% Revenue per Product by Customer and Category' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percent_revenue_per_product_by_customer_and_category + title: '% Revenue per Product by Customer and Category' - content: buckets: - items: @@ -14467,12 +14223,12 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - id: percentage_of_customers_by_region - title: Percentage of Customers by Region - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: percentage_of_customers_by_region + title: Percentage of Customers by Region - content: buckets: - items: @@ -14524,12 +14280,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - id: product_breakdown - title: Product Breakdown - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_breakdown + title: Product Breakdown - content: buckets: - items: @@ -14542,9 +14298,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -14577,12 +14333,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - id: product_categories_pie_chart - title: Product Categories Pie Chart - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_categories_pie_chart + title: Product Categories Pie Chart - content: buckets: - items: @@ -14652,12 +14408,12 @@ interactions: visible: false version: '2' visualizationUrl: local:column - id: product_revenue_comparison-over_previous_period - title: Product Revenue Comparison (over previous period) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_revenue_comparison-over_previous_period + title: Product Revenue Comparison (over previous period) - content: buckets: - items: @@ -14709,12 +14465,12 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - id: product_saleability - title: Product Saleability - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: product_saleability + title: Product Saleability - content: buckets: - items: @@ -14808,12 +14564,12 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - id: revenue_and_quantity_by_product_and_category - title: Revenue and Quantity by Product and Category - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_and_quantity_by_product_and_category + title: Revenue and Quantity by Product and Category - content: buckets: - items: @@ -14864,12 +14620,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - id: revenue_by_category_trend - title: Revenue by Category Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_by_category_trend + title: Revenue by Category Trend - content: buckets: - items: @@ -14903,12 +14659,12 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - id: revenue_by_product - title: Revenue by Product - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_by_product + title: Revenue by Product - content: buckets: - items: @@ -14959,12 +14715,12 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - id: revenue_per_usd_vs_spend_by_campaign - title: Revenue per $ vs Spend by Campaign - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_per_usd_vs_spend_by_campaign + title: Revenue per $ vs Spend by Campaign - content: buckets: - items: @@ -15027,12 +14783,12 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - id: revenue_trend - title: Revenue Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: revenue_trend + title: Revenue Trend - content: buckets: - items: @@ -15084,12 +14840,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - id: top_10_customers - title: Top 10 Customers - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user + id: top_10_customers + title: Top 10 Customers - content: buckets: - items: @@ -15141,14 +14897,403 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - id: top_10_products - title: Top 10 Products - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:34 createdBy: id: admin type: user - exportDefinitions: [] - memoryItems: [] + id: top_10_products + title: Top 10 Products + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: CAMPAIGN_CHANNEL_ID + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: CATEGORY + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: TYPE + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CAMPAIGN_CHANNELS + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: BUDGET + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: SPEND + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_ID + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: BUDGET + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_CHANNEL_ID + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-bigquery-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: CAMPAIGN_ID + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: CAMPAIGN_NAME + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CAMPAIGNS + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: CUSTOMER_ID + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: CUSTOMER_NAME + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: REGION + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: GEO__STATE__LOCATION + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: STATE + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: CUSTOMERS + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: ORDER_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: ORDER_LINE_ID + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: ORDER_STATUS + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: ORDER_LINES + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: PRICE + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: QUANTITY + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: CAMPAIGN_ID + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: CUSTOMER_ID + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: DATE + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: PRODUCT_ID + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region_demo_clone + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: PRODUCT_ID + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: PRODUCT_NAME + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: CATEGORY + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-bigquery-ds + id: PRODUCTS + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -15158,15 +15303,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_clone response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -15175,21 +15319,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/permissions body: null headers: Accept: @@ -15200,15 +15344,32 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/permissions response: - status: - code: 200 - message: OK + body: + string: + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '292' Content-Type: @@ -15221,58 +15382,40 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_clone/permissions body: - permissions: + hierarchyPermissions: - assignee: id: demo2 type: user - name: ANALYZE + name: MANAGE - assignee: id: demoGroup type: userGroup - name: VIEW - hierarchyPermissions: + name: ANALYZE + permissions: - assignee: id: demo2 type: user - name: MANAGE + name: ANALYZE - assignee: id: demoGroup type: userGroup - name: ANALYZE + name: VIEW headers: Accept-Encoding: - br, gzip, deflate @@ -15282,15 +15425,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_clone/permissions response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -15299,21 +15441,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -15345,9 +15487,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -15359,6 +15499,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -15369,54 +15510,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -15457,200 +15598,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -15672,9 +15814,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -15730,9 +15872,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -15787,6 +15929,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -15890,9 +16033,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -16115,9 +16258,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -16680,207 +16823,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -16891,92 +17101,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -16988,51 +17153,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -17042,10 +17211,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -17057,12 +17226,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -17076,9 +17244,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -17090,18 +17259,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -17110,12 +17279,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -17131,15 +17302,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -17148,21 +17318,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/dataSources/demo-bigquery-ds body: null headers: Accept-Encoding: @@ -17171,15 +17341,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/dataSources/demo-bigquery-ds response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -17190,15 +17359,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml index 1cfd517b5..aa5c314f1 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -56,13 +21,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -73,7 +38,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -85,20 +50,50 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '255' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test?include=workspaces body: null headers: Accept: @@ -109,15 +104,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/test?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: e4c0ebde039443f9a197e335489f5f41 headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -126,37 +125,32 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 845632fc0baca9ed33d68265e1fe9ffe + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: test - type: workspace attributes: name: Test + id: test relationships: parent: data: id: demo type: workspace + type: workspace headers: Accept: - application/json @@ -168,15 +162,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: Test + id: test + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/test headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '180' Content-Type: @@ -189,28 +189,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Test - id: test - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -221,40 +214,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -262,13 +224,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -279,7 +241,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -290,7 +252,7 @@ interactions: name: Test id: test links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test + self: http://localhost:3000/api/v1/entities/workspaces/test relationships: parent: data: @@ -302,57 +264,62 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Length: - - '453' + - '269' Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/test?include=workspaces + response: body: string: data: @@ -370,13 +337,36 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/test?include=workspaces + self: http://localhost:3000/api/v1/entities/workspaces/test?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '453' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -408,9 +398,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -422,6 +410,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -432,54 +421,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -520,200 +509,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -735,9 +725,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -793,9 +783,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -850,6 +840,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -953,9 +944,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1178,9 +1169,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1743,207 +1734,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -1954,92 +2012,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -2051,51 +2064,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2105,10 +2122,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2120,12 +2137,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2139,9 +2155,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2153,18 +2170,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2173,12 +2190,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2194,15 +2213,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2211,15 +2229,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_declarative_workspaces.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_declarative_workspaces.yaml index dae4a11bb..e616285a9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_declarative_workspaces.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_declarative_workspaces.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -104,46 +69,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -192,144 +157,144 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -354,19 +319,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -374,15 +339,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -524,6 +489,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -627,9 +593,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -852,9 +818,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1423,6 +1389,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1431,6 +1398,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1439,6 +1407,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1456,6 +1425,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1463,6 +1433,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1480,6 +1451,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1512,6 +1484,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1526,6 +1499,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1534,6 +1508,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1561,6 +1536,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1569,6 +1545,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1577,6 +1554,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1585,9 +1563,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1620,6 +1600,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1628,6 +1609,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1636,6 +1618,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1653,6 +1636,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1660,6 +1644,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1677,6 +1662,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1687,6 +1673,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1697,6 +1684,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1707,6 +1695,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1728,6 +1717,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1736,6 +1726,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1744,6 +1735,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1814,6 +1806,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -1848,6 +1841,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -1859,33 +1853,15 @@ interactions: permissions: [] settings: [] userDataFilters: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -1893,7 +1869,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Vary: @@ -1904,8 +1880,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO + response: body: string: workspaceDataFilters: @@ -1961,46 +1954,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -2049,144 +2042,144 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -2211,19 +2204,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -2231,15 +2224,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -2381,6 +2374,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2484,9 +2478,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2709,9 +2703,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3280,6 +3274,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -3288,6 +3283,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3296,6 +3292,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -3313,6 +3310,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -3320,6 +3318,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -3337,6 +3336,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3369,6 +3369,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -3383,6 +3384,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -3391,6 +3393,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -3418,6 +3421,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -3426,6 +3430,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -3434,6 +3439,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -3442,9 +3448,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -3477,6 +3485,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -3485,6 +3494,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -3493,6 +3503,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -3510,6 +3521,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -3517,6 +3529,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -3534,6 +3547,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3544,6 +3558,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -3554,6 +3569,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -3564,6 +3580,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -3585,6 +3602,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -3593,6 +3611,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -3601,6 +3620,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3671,6 +3691,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -3705,6 +3726,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -3716,3 +3738,35 @@ interactions: permissions: [] settings: [] userDataFilters: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_non_existing_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_non_existing_workspace.yaml index 6b1cd4309..9bbcab36c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_non_existing_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_non_existing_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -56,13 +21,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -73,7 +38,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -85,44 +50,28 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '255' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -130,9 +79,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -141,8 +88,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -150,13 +114,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -167,7 +131,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -179,41 +143,24 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '255' Content-Type: - application/json DATE: *id001 @@ -224,9 +171,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -235,8 +180,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -244,13 +206,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -261,7 +223,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -273,14 +235,46 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '255' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_parent_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_parent_workspace.yaml index 6b1cd4309..9bbcab36c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_parent_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_parent_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -56,13 +21,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -73,7 +38,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -85,44 +50,28 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '255' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -130,9 +79,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -141,8 +88,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -150,13 +114,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -167,7 +131,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -179,41 +143,24 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '255' Content-Type: - application/json DATE: *id001 @@ -224,9 +171,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -235,8 +180,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -244,13 +206,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -261,7 +223,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -273,14 +235,46 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '255' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_workspace.yaml index c1521f4da..59d1fbadb 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_delete_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -56,13 +21,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -73,7 +38,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -85,44 +50,28 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br + Content-Length: + - '255' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -130,9 +79,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -141,8 +88,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -150,13 +114,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -167,7 +131,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -179,39 +143,26 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 204 - message: No Content + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive + Content-Encoding: + - br + Content-Length: + - '255' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' @@ -220,44 +171,39 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: - Accept: - - application/json Accept-Encoding: - br, gzip, deflate X-GDC-VALIDATE-RELATIONS: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west_california response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '893' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -266,16 +212,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -283,13 +247,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -301,14 +265,41 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '893' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -340,9 +331,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -354,6 +343,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -364,54 +354,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -452,200 +442,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -667,9 +658,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -725,9 +716,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -782,6 +773,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -885,9 +877,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1110,9 +1102,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1675,207 +1667,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -1886,92 +1945,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -1983,51 +1997,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2037,10 +2055,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2052,12 +2070,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2071,9 +2088,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2085,18 +2103,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2105,12 +2123,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2126,15 +2146,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2143,15 +2162,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_user_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_user_data_filters.yaml index a20cc9882..0302e34d8 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_user_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_user_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -14,15 +11,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -36,22 +33,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -62,15 +58,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -83,16 +79,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace.yaml index accb3d5d1..360610e3a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,46 +25,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -148,143 +113,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -309,19 +274,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -329,15 +294,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -479,6 +444,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -582,9 +548,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -807,9 +773,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1378,6 +1344,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1386,6 +1353,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1394,6 +1362,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1411,6 +1380,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1418,6 +1388,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1435,6 +1406,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1467,6 +1439,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1481,6 +1454,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1489,6 +1463,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1516,6 +1491,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1524,6 +1500,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1532,6 +1509,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1540,9 +1518,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1575,6 +1555,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1583,6 +1564,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1591,6 +1573,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1608,6 +1591,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1615,6 +1599,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1632,6 +1617,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1642,6 +1628,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1652,6 +1639,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1662,6 +1650,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1683,6 +1672,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1691,6 +1681,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1699,6 +1690,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1737,33 +1729,15 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -1771,7 +1745,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Vary: @@ -1782,8 +1756,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO + response: body: string: analytics: @@ -1795,46 +1786,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -1883,143 +1874,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -2044,19 +2035,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -2064,15 +2055,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -2214,6 +2205,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2317,9 +2309,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2542,9 +2534,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3113,6 +3105,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -3121,6 +3114,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3129,6 +3123,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -3146,6 +3141,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -3153,6 +3149,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -3170,6 +3167,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3202,6 +3200,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -3216,6 +3215,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -3224,6 +3224,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -3251,6 +3252,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -3259,6 +3261,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -3267,6 +3270,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -3275,9 +3279,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -3310,6 +3316,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -3318,6 +3325,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -3326,6 +3334,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -3343,6 +3352,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -3350,6 +3360,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -3367,6 +3378,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3377,6 +3389,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -3387,6 +3400,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -3397,6 +3411,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -3418,6 +3433,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -3426,6 +3442,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -3434,6 +3451,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3472,3 +3490,35 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.yaml index d7ec092c4..36bc598c2 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspace_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -77,33 +45,15 @@ interactions: workspace: id: demo_west_california type: workspace - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '603' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -111,16 +61,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters + response: body: string: workspaceDataFilters: @@ -152,3 +120,33 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces.yaml index 361653555..b76de3f0b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -104,46 +69,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -192,144 +157,144 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -354,19 +319,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -374,15 +339,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -524,6 +489,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -627,9 +593,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -852,9 +818,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1423,6 +1389,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1431,6 +1398,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1439,6 +1407,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1456,6 +1425,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1463,6 +1433,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1480,6 +1451,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1512,6 +1484,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1526,6 +1499,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1534,6 +1508,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1561,6 +1536,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1569,6 +1545,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1577,6 +1554,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1585,9 +1563,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1620,6 +1600,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1628,6 +1609,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1636,6 +1618,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1653,6 +1636,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1660,6 +1644,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1677,6 +1662,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1687,6 +1673,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1697,6 +1684,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1707,6 +1695,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1728,6 +1717,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1736,6 +1726,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1744,6 +1735,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1814,6 +1806,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -1848,6 +1841,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -1859,3 +1853,36 @@ interactions: permissions: [] settings: [] userDataFilters: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces_snake_case.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces_snake_case.yaml index 361653555..b76de3f0b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces_snake_case.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_declarative_workspaces_snake_case.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -104,46 +69,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -192,144 +157,144 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -354,19 +319,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -374,15 +339,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -524,6 +489,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -627,9 +593,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -852,9 +818,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1423,6 +1389,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1431,6 +1398,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1439,6 +1407,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1456,6 +1425,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1463,6 +1433,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1480,6 +1451,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1512,6 +1484,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1526,6 +1499,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1534,6 +1508,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1561,6 +1536,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1569,6 +1545,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1577,6 +1554,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1585,9 +1563,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1620,6 +1600,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1628,6 +1609,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1636,6 +1618,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1653,6 +1636,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1660,6 +1644,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1677,6 +1662,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1687,6 +1673,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1697,6 +1684,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1707,6 +1695,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1728,6 +1717,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1736,6 +1726,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1744,6 +1735,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1814,6 +1806,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -1848,6 +1841,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -1859,3 +1853,36 @@ interactions: permissions: [] settings: [] userDataFilters: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_workspace.yaml index e16e14488..23403fed9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_get_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces body: null headers: Accept: @@ -14,15 +11,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: Demo + id: demo + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '199' Content-Type: @@ -32,28 +35,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo - id: demo - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces body: null headers: Accept: @@ -64,33 +60,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '468' - Content-Type: - - application/json - DATE: *id001 - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -108,7 +80,33 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '468' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_user_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_user_data_filters.yaml index cdf4a1f4a..98a49f1aa 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_user_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_user_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -14,15 +11,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -36,22 +33,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: userDataFilters: [] headers: @@ -63,15 +59,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -80,21 +75,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -105,15 +100,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -126,22 +121,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -150,15 +144,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -167,27 +160,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -196,15 +189,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -217,42 +230,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: userDataFilters: [] headers: @@ -264,15 +256,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -281,21 +272,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -306,15 +297,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -327,22 +318,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -374,9 +364,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -388,6 +376,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -398,54 +387,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -486,200 +475,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -701,9 +691,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -759,9 +749,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -816,6 +806,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -919,9 +910,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1144,9 +1135,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1709,207 +1700,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -1920,92 +1978,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -2017,51 +2030,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2071,10 +2088,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2086,12 +2103,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2105,9 +2121,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2119,18 +2136,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2139,12 +2156,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2160,15 +2179,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2177,15 +2195,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace.yaml index 23f2fc020..bcdbd50de 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,46 +25,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -148,143 +113,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -309,19 +274,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -329,15 +294,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -479,6 +444,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -582,9 +548,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -807,9 +773,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1378,6 +1344,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1386,6 +1353,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1394,6 +1362,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1411,6 +1380,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1418,6 +1388,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1435,6 +1406,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1467,6 +1439,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1481,6 +1454,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1489,6 +1463,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1516,6 +1491,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1524,6 +1500,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1532,6 +1509,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1540,9 +1518,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1575,6 +1555,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1583,6 +1564,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1591,6 +1573,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1608,6 +1591,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1615,6 +1599,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1632,6 +1617,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1642,6 +1628,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1652,6 +1639,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1662,6 +1650,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1683,6 +1672,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1691,6 +1681,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1699,6 +1690,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1737,9 +1729,39 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: {} headers: Accept-Encoding: @@ -1750,15 +1772,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -1767,21 +1788,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: null headers: Accept: @@ -1792,17 +1813,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo response: - status: - code: 200 - message: OK + body: + string: + analytics: + analyticalDashboardExtensions: [] + analyticalDashboards: [] + attributeHierarchies: [] + dashboardPlugins: [] + exportDefinitions: [] + filterContexts: [] + memoryItems: [] + metrics: [] + parameters: [] + visualizationObjects: [] + ldm: + datasets: [] + dateInstances: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '264' + - '280' Content-Type: - application/json DATE: *id001 @@ -1813,34 +1847,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - analytics: - analyticalDashboardExtensions: [] - analyticalDashboards: [] - attributeHierarchies: [] - dashboardPlugins: [] - exportDefinitions: [] - filterContexts: [] - memoryItems: [] - metrics: [] - visualizationObjects: [] - ldm: - datasets: [] - dateInstances: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -1849,15 +1870,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -1866,27 +1886,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -1895,15 +1915,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -1916,409 +1956,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: campaign_channel_id - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: type - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: budget - title: Budget - sourceColumnDataType: NUMERIC - description: Budget - tags: - - Campaign channels - - id: spend - sourceColumn: spend - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: campaign_channel_id - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: budget - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: campaign_id - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: campaign_name - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaigns - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: customer_id - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: customer_name - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: region - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: geo__state__location - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - sourceColumn: state - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: customers - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: product_id - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: product_name - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: products - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -2367,13 +2022,17 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - id: campaign - title: Campaign + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -2406,6 +2065,10 @@ interactions: type: dashboardPlugin version: '2' version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: dashboard_plugin title: Dashboard plugin - content: @@ -2552,24 +2215,36 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: '' id: product_and_category title: Product & Category - description: '' - analyticalDashboardExtensions: [] attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: @@ -2589,9 +2264,9 @@ interactions: localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: @@ -2605,141 +2280,239 @@ interactions: localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: amount_of_active_customers title: '# of Active Customers' - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: amount_of_orders title: '# of Orders' - content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: amount_of_top_customers title: '# of Top Customers' - content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: order_amount title: Order Amount - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue title: '% Revenue' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_customers title: '% Revenue from Top 10 Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_customers title: '% Revenue from Top 10% Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_products title: '% Revenue from Top 10% Products' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_from_top_10_products title: '% Revenue from Top 10 Products' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_in_category title: '% Revenue in Category' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_per_product title: '% Revenue per Product' - content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-clothing title: Revenue (Clothing) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-electronic title: Revenue (Electronic) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-home title: Revenue (Home) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue-outdoor title: Revenue (Outdoor) - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_per_customer title: Revenue per Customer - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_per_dollar_spent title: Revenue per Dollar Spent - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_top_10 title: Revenue / Top 10 - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_top_10_percent title: Revenue / Top 10% - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: total_revenue title: Total Revenue - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2799,6 +2572,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend - content: @@ -2843,9 +2620,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2871,6 +2648,10 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: customers_trend title: Customers Trend - content: @@ -2946,6 +2727,10 @@ interactions: direction: asc version: '2' visualizationUrl: local:table + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percent_revenue_per_product_by_customer_and_category title: '% Revenue per Product by Customer and Category' - content: @@ -3001,6 +2786,10 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: percentage_of_customers_by_region title: Percentage of Customers by Region - content: @@ -3054,6 +2843,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_breakdown title: Product Breakdown - content: @@ -3103,6 +2896,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_categories_pie_chart title: Product Categories Pie Chart - content: @@ -3174,6 +2971,10 @@ interactions: visible: false version: '2' visualizationUrl: local:column + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_revenue_comparison-over_previous_period title: Product Revenue Comparison (over previous period) - content: @@ -3227,6 +3028,10 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: product_saleability title: Product Saleability - content: @@ -3322,6 +3127,10 @@ interactions: direction: asc version: '2' visualizationUrl: local:table + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_and_quantity_by_product_and_category title: Revenue and Quantity by Product and Category - content: @@ -3374,6 +3183,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:line + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_by_category_trend title: Revenue by Category Trend - content: @@ -3409,6 +3222,10 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_by_product title: Revenue by Product - content: @@ -3461,6 +3278,10 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_per_usd_vs_spend_by_campaign title: Revenue per $ vs Spend by Campaign - content: @@ -3525,6 +3346,10 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: revenue_trend title: Revenue Trend - content: @@ -3578,6 +3403,10 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: top_10_customers title: Top 10 Customers - content: @@ -3631,10 +3460,403 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar + createdAt: 2025-08-07 11:45 + createdBy: + id: admin + type: user id: top_10_products title: Top 10 Products - exportDefinitions: [] - memoryItems: [] + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -3644,15 +3866,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3661,21 +3882,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -3686,40 +3907,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -4150,6 +4340,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -4253,9 +4444,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -5049,6 +5240,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -5057,6 +5249,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -5065,6 +5258,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -5082,6 +5276,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -5089,6 +5284,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -5106,6 +5302,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -5138,6 +5335,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -5152,6 +5350,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -5160,6 +5359,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -5187,6 +5387,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -5195,6 +5396,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -5203,6 +5405,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -5211,9 +5414,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -5246,6 +5451,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -5254,6 +5460,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -5262,6 +5469,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -5279,6 +5487,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -5286,6 +5495,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -5303,6 +5513,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -5313,6 +5524,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -5323,6 +5535,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -5333,6 +5546,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -5354,6 +5568,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -5362,6 +5577,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -5370,6 +5586,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -5408,9 +5625,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -5442,9 +5688,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -5456,6 +5700,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -5466,54 +5711,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -5554,200 +5799,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -5769,9 +6015,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -5827,9 +6073,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -5884,6 +6130,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -5987,9 +6234,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -6212,9 +6459,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -6777,207 +7024,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -6988,92 +7302,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -7085,51 +7354,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -7139,10 +7412,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -7154,12 +7427,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -7173,9 +7445,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -7187,18 +7460,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -7207,12 +7480,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -7228,15 +7503,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -7245,15 +7519,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.yaml index 555d3e747..2113c7a7f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspace_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -77,9 +45,37 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: [] headers: @@ -91,15 +87,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -108,21 +103,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -133,15 +128,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK + body: + string: + workspaceDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '27' Content-Type: @@ -154,22 +149,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - workspaceDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -178,15 +172,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -195,27 +188,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -224,15 +217,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -245,42 +258,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: - columnName: wdf__region @@ -320,15 +312,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -337,21 +328,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -362,37 +353,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -424,9 +387,36 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -458,9 +448,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -472,6 +460,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -482,54 +471,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -570,200 +559,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -785,9 +775,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -843,9 +833,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -900,6 +890,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1003,9 +994,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1228,9 +1219,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1793,207 +1784,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -2004,92 +2062,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -2101,51 +2114,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2155,10 +2172,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2170,12 +2187,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2189,9 +2205,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2203,18 +2220,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2223,12 +2240,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2244,15 +2263,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2261,15 +2279,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspaces.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspaces.yaml index c07156e2b..661fbe978 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspaces.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_load_and_put_declarative_workspaces.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: [] workspaces: [] @@ -16,15 +13,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -34,21 +30,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: null headers: Accept: @@ -59,15 +55,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 200 - message: OK + body: + string: + workspaceDataFilters: [] + workspaces: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '43' Content-Type: @@ -80,23 +77,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - workspaceDataFilters: [] - workspaces: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -105,15 +100,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -122,27 +116,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -151,15 +145,35 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + allowedOrigins: [] + dataCenter: '' + earlyAccess: enableAlerting + earlyAccessValues: + - enableAlerting + - enableSmtp + - enablePreAggregationDatasets + - enableScheduling + - enableCompositeGrain + - enableUserManagement + - enableRawExports + - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization + region: '' + id: default + type: organization + links: + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '564' Content-Type: @@ -172,42 +186,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com - allowedOrigins: [] - earlyAccess: enableAlerting - earlyAccessValues: - - enableAlerting - - enableSmtp - - enablePreAggregationDatasets - - enableScheduling - - enableCompositeGrain - - enableUserManagement - - enableRawExports - - enableFlexibleDashboardLayout - region: '' - dataCenter: '' - id: python-sdk-dex - type: organization - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -239,379 +232,22 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo + - automations: [] + customApplicationSettings: [] + filterViews: [] + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + id: demo model: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: campaign_channel_id - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: type - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: budget - title: Budget - sourceColumnDataType: NUMERIC - description: Budget - tags: - - Campaign channels - - id: spend - sourceColumn: spend - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: campaign_channel_id - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: budget - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels - GROUP BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: campaign_id - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: campaign_name - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaigns - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: customer_id - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: customer_name - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: region - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: geo__state__location - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - locale: en-US - translations: - - locale: cs-CZ - sourceColumn: geo__state__location_cz - sourceColumn: state - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: customers - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: product_id - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: product_name - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: products - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -660,13 +296,13 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -845,24 +481,24 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' - analyticalDashboardExtensions: [] attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: @@ -882,9 +518,9 @@ interactions: localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: @@ -898,9 +534,10 @@ interactions: localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -922,9 +559,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -980,9 +617,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -1037,6 +674,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1930,96 +1568,454 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - exportDefinitions: [] - memoryItems: [] - permissions: - - assignee: - id: demo2 - type: user - name: ANALYZE - - assignee: - id: demoGroup - type: userGroup - name: VIEW - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels + GROUP BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + labels: + - description: Location + id: geo__state__location + locale: en-US + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + translations: + - locale: cs-CZ + sourceColumn: geo__state__location_cz + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date + name: Demo + permissions: + - assignee: + id: demo2 + type: user + name: ANALYZE + - assignee: + id: demoGroup + type: userGroup + name: VIEW settings: [] userDataFilters: [] + - automations: [] customApplicationSettings: [] - automations: [] filterViews: [] - - id: demo_west - name: Demo West + hierarchyPermissions: [] + id: demo_west model: - ldm: - datasets: [] - dateInstances: [] - datasetExtensions: - - id: order_lines - workspaceDataFilterReferences: - - filterColumn: wdf__state - filterColumnDataType: STRING - filterId: - id: wdf__state - type: workspaceDataFilter analytics: - analyticalDashboards: [] analyticalDashboardExtensions: - id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + analyticalDashboards: [] attributeHierarchies: [] dashboardPlugins: [] + exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - exportDefinitions: [] - memoryItems: [] + ldm: + datasetExtensions: + - id: order_lines + workspaceDataFilterReferences: + - filterColumn: wdf__state + filterColumnDataType: STRING + filterId: + id: wdf__state + type: workspaceDataFilter + datasets: [] + dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] - hierarchyPermissions: [] settings: [] userDataFilters: [] + - automations: [] customApplicationSettings: [] - automations: [] filterViews: [] - - id: demo_west_california - name: Demo West California + hierarchyPermissions: [] + id: demo_west_california model: - ldm: - datasets: [] - dateInstances: [] analytics: - analyticalDashboards: [] analyticalDashboardExtensions: [] + analyticalDashboards: [] attributeHierarchies: [] dashboardPlugins: [] + exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - exportDefinitions: [] - memoryItems: [] + ldm: + datasets: [] + dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace permissions: [] - hierarchyPermissions: [] settings: [] userDataFilters: [] - customApplicationSettings: [] - automations: [] - filterViews: [] headers: Accept-Encoding: - br, gzip, deflate @@ -2029,15 +2025,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2046,21 +2041,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -2071,40 +2066,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -2580,6 +2544,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -3874,6 +3839,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -3908,6 +3874,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -3919,9 +3886,38 @@ interactions: permissions: [] settings: [] userDataFilters: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -3953,9 +3949,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -3967,6 +3961,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -3977,54 +3972,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -4065,200 +4060,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -4280,9 +4276,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -4338,9 +4334,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -4395,6 +4391,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -4498,9 +4495,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -4723,9 +4720,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -5288,207 +5285,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -5499,92 +5563,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -5596,51 +5615,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -5650,10 +5673,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -5665,12 +5688,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -5684,9 +5706,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -5698,18 +5721,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -5718,12 +5741,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -5739,15 +5764,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -5756,15 +5780,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_user_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_user_data_filters.yaml index 2459869c2..7868c1b74 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_user_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_user_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: userDataFilters: - id: user_data_filter @@ -21,15 +18,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: &id001 - PLACEHOLDER Expires: @@ -39,21 +35,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -64,15 +60,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: + - id: user_data_filter + maql: 'FALSE' + title: youwillnotsee + user: + id: demo + type: user headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '121' Content-Type: @@ -85,28 +87,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: - - id: user_data_filter - maql: 'FALSE' - title: youwillnotsee - user: - id: demo - type: user + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -138,9 +133,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -152,6 +145,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -162,54 +156,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -250,200 +244,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -465,9 +460,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -523,9 +518,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -580,6 +575,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -683,9 +679,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -908,9 +904,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1473,207 +1469,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -1684,92 +1747,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -1781,51 +1799,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -1835,10 +1857,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -1850,12 +1872,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -1869,9 +1890,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -1883,18 +1905,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -1903,12 +1925,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -1924,15 +1948,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -1941,15 +1964,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml index 03ff73b5e..66092e45c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing?include=workspaces body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_testing?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 09f883c11f2a558166341cb807849918 headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -32,32 +33,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 1b834e5b0dd18f6d06c23fd347ee7517 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_testing - type: workspace attributes: name: demo_testing + id: demo_testing + type: workspace headers: Accept: - application/json @@ -69,15 +65,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: demo_testing + id: demo_testing + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_testing headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '204' Content-Type: @@ -90,28 +92,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: demo_testing - id: demo_testing - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_testing + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -122,40 +117,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -167,46 +131,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -255,143 +219,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -416,19 +380,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -436,15 +400,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -586,6 +550,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -689,9 +654,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -914,9 +879,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1485,6 +1450,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1493,6 +1459,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1501,6 +1468,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1518,6 +1486,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1525,6 +1494,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1542,6 +1512,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1574,6 +1545,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1588,6 +1560,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1596,6 +1569,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1623,6 +1597,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1631,6 +1606,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1639,6 +1615,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1647,9 +1624,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1682,6 +1661,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1690,6 +1670,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1698,6 +1679,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1715,6 +1697,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1722,6 +1705,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1739,6 +1723,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1749,6 +1734,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1759,6 +1745,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1769,6 +1756,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1790,6 +1778,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1798,6 +1787,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1806,6 +1796,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1844,370 +1835,41 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing body: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: campaign_channel_id - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: type - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: budget - title: Budget - sourceColumnDataType: NUMERIC - description: Budget - tags: - - Campaign channels - - id: spend - sourceColumn: spend - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: campaign_channel_id - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: budget - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: campaign_id - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: campaign_name - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaigns - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: customer_id - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: customer_name - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: region - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: geo__state__location - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - sourceColumn: state - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: customers - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: product_id - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: product_name - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: products - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -2215,54 +1877,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -2303,200 +1965,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 - widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] + type: IDashboardLayoutItem + widget: dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' - analyticalDashboardExtensions: [] attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -2518,9 +2181,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -2575,9 +2238,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") @@ -2629,6 +2292,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2732,9 +2396,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2957,9 +2621,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3522,8 +3186,391 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - exportDefinitions: [] - memoryItems: [] + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date headers: Accept-Encoding: - br, gzip, deflate @@ -3533,15 +3580,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3550,21 +3596,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_testing?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -3575,40 +3621,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo_testing?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -3620,46 +3635,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -3708,143 +3723,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 - widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] + type: IDashboardLayoutItem + widget: dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -3869,19 +3884,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -3889,15 +3904,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -4039,6 +4054,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -4142,9 +4158,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -4367,9 +4383,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -4938,6 +4954,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -4946,6 +4963,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -4954,6 +4972,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -4971,6 +4990,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -4978,6 +4998,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -4995,6 +5016,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -5027,6 +5049,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -5041,6 +5064,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -5049,6 +5073,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -5076,6 +5101,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -5084,6 +5110,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -5092,6 +5119,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -5100,9 +5128,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -5135,6 +5165,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -5143,6 +5174,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -5151,6 +5183,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -5168,6 +5201,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -5175,6 +5209,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -5192,6 +5227,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -5202,6 +5238,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -5212,6 +5249,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -5222,6 +5260,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -5237,6 +5276,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -5245,6 +5285,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -5253,6 +5294,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -5291,9 +5333,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -5325,9 +5396,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -5339,6 +5408,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -5349,54 +5419,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -5437,200 +5507,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -5652,9 +5723,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -5710,9 +5781,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -5767,6 +5838,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -5870,9 +5942,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -6095,9 +6167,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -6660,207 +6732,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -6871,92 +7010,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -6968,51 +7062,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -7022,10 +7120,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -7037,12 +7135,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -7056,9 +7153,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -7070,18 +7168,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -7090,12 +7188,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -7111,15 +7211,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -7128,15 +7227,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.yaml index e624a55a6..570871727 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -77,9 +45,37 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: [] headers: @@ -91,15 +87,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -108,21 +103,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -133,15 +128,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK + body: + string: + workspaceDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '27' Content-Type: @@ -154,22 +149,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - workspaceDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: - columnName: wdf__region @@ -209,15 +203,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -226,21 +219,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -251,37 +244,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -313,9 +278,36 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -347,9 +339,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -361,6 +351,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -371,54 +362,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -459,200 +450,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -674,9 +666,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -732,9 +724,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -789,6 +781,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -892,9 +885,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1117,9 +1110,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1682,207 +1675,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -1893,92 +1953,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -1990,51 +2005,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2044,10 +2063,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2059,12 +2078,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2078,9 +2096,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2092,18 +2111,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2112,12 +2131,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2133,15 +2154,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2150,15 +2170,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspaces.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspaces.yaml index 8c8c624a7..23fea759a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspaces.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspaces.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -104,46 +69,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -192,144 +157,144 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -354,19 +319,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -374,15 +339,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -524,6 +489,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -627,9 +593,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -852,9 +818,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1423,6 +1389,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1431,6 +1398,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1439,6 +1407,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1456,6 +1425,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1463,6 +1433,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1480,6 +1451,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1512,6 +1484,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1526,6 +1499,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1534,6 +1508,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1561,6 +1536,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1569,6 +1545,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1577,6 +1554,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1585,9 +1563,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1620,6 +1600,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1628,6 +1609,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1636,6 +1618,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1653,6 +1636,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1660,6 +1644,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1677,6 +1662,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1687,6 +1673,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1697,6 +1684,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1707,6 +1695,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1728,6 +1717,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1736,6 +1726,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1744,6 +1735,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1814,6 +1806,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -1848,6 +1841,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -1859,9 +1853,39 @@ interactions: permissions: [] settings: [] userDataFilters: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: [] workspaces: [] @@ -1874,15 +1898,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -1891,21 +1914,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: null headers: Accept: @@ -1916,15 +1939,16 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 200 - message: OK + body: + string: + workspaceDataFilters: [] + workspaces: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '43' Content-Type: @@ -1937,23 +1961,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - workspaceDataFilters: [] - workspaces: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -1985,375 +2007,22 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo + - automations: [] + customApplicationSettings: [] + filterViews: [] + hierarchyPermissions: + - assignee: + id: demo2 + type: user + name: MANAGE + - assignee: + id: demoGroup + type: userGroup + name: ANALYZE + id: demo model: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: campaign_channel_id - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: type - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: budget - title: Budget - sourceColumnDataType: NUMERIC - description: Budget - tags: - - Campaign channels - - id: spend - sourceColumn: spend - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: campaign_channel_id - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: budget - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels - GROUP BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: campaign_id - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: campaign_name - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaigns - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: customer_id - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: customer_name - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: region - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: geo__state__location - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - sourceColumn: state - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: customers - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: product_id - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: product_name - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: products - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -2361,54 +2030,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -2449,200 +2118,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' - analyticalDashboardExtensions: [] attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -2664,9 +2334,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -2722,9 +2392,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -2779,6 +2449,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2882,9 +2553,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -3107,9 +2778,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3672,8 +3343,398 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - exportDefinitions: [] - memoryItems: [] + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels + GROUP BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -3683,85 +3744,75 @@ interactions: id: demoGroup type: userGroup name: VIEW - hierarchyPermissions: - - assignee: - id: demo2 - type: user - name: MANAGE - - assignee: - id: demoGroup - type: userGroup - name: ANALYZE settings: [] userDataFilters: [] + - automations: [] customApplicationSettings: [] - automations: [] filterViews: [] - - id: demo_west - name: Demo West + hierarchyPermissions: [] + id: demo_west model: - ldm: - datasets: [] - dateInstances: [] - datasetExtensions: - - id: order_lines - workspaceDataFilterReferences: - - filterColumn: wdf__state - filterColumnDataType: STRING - filterId: - id: wdf__state - type: workspaceDataFilter analytics: - analyticalDashboards: [] analyticalDashboardExtensions: - id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + analyticalDashboards: [] attributeHierarchies: [] dashboardPlugins: [] + exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - exportDefinitions: [] - memoryItems: [] + ldm: + datasetExtensions: + - id: order_lines + workspaceDataFilterReferences: + - filterColumn: wdf__state + filterColumnDataType: STRING + filterId: + id: wdf__state + type: workspaceDataFilter + datasets: [] + dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] - hierarchyPermissions: [] settings: [] userDataFilters: [] + - automations: [] customApplicationSettings: [] - automations: [] filterViews: [] - - id: demo_west_california - name: Demo West California + hierarchyPermissions: [] + id: demo_west_california model: - ldm: - datasets: [] - dateInstances: [] analytics: - analyticalDashboards: [] analyticalDashboardExtensions: [] + analyticalDashboards: [] attributeHierarchies: [] dashboardPlugins: [] + exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - exportDefinitions: [] - memoryItems: [] + ldm: + datasets: [] + dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace permissions: [] - hierarchyPermissions: [] settings: [] userDataFilters: [] - customApplicationSettings: [] - automations: [] - filterViews: [] headers: Accept-Encoding: - br, gzip, deflate @@ -3771,15 +3822,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -3788,21 +3838,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -3813,40 +3863,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -3902,46 +3921,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -3990,144 +4009,144 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -4152,19 +4171,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -4172,15 +4191,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -4322,6 +4341,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -4425,9 +4445,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -4650,9 +4670,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -5221,6 +5241,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -5229,6 +5250,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -5237,6 +5259,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -5254,6 +5277,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -5261,6 +5285,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -5278,6 +5303,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -5310,6 +5336,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -5324,6 +5351,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -5332,6 +5360,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -5359,6 +5388,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -5367,6 +5397,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -5375,6 +5406,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -5383,9 +5415,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -5418,6 +5452,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -5426,6 +5461,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -5434,6 +5470,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -5451,6 +5488,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -5458,6 +5496,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -5475,6 +5514,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -5485,6 +5525,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -5495,6 +5536,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -5505,6 +5547,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -5526,6 +5569,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -5534,6 +5578,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -5542,6 +5587,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -5612,6 +5658,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -5646,6 +5693,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -5657,9 +5705,38 @@ interactions: permissions: [] settings: [] userDataFilters: [] + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -5691,9 +5768,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -5705,6 +5780,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -5715,54 +5791,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -5803,200 +5879,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -6018,9 +6095,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -6076,9 +6153,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -6133,6 +6210,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -6236,9 +6314,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -6461,9 +6539,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -7026,207 +7104,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -7237,92 +7382,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -7334,51 +7434,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -7388,10 +7492,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -7403,12 +7507,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -7422,9 +7525,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -7436,18 +7540,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -7456,12 +7560,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -7477,15 +7583,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -7494,15 +7599,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_user_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_user_data_filters.yaml index 2d7cd3c0d..14b7a5a00 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_user_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_user_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -14,15 +11,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -36,22 +33,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/userDataFilters body: null headers: Accept: @@ -62,15 +58,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/userDataFilters response: - status: - code: 200 - message: OK + body: + string: + userDataFilters: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '22' Content-Type: @@ -83,22 +79,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - userDataFilters: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization body: null headers: Accept-Encoding: @@ -107,15 +102,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 302 - message: Found + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' Content-Type: @@ -124,27 +118,27 @@ interactions: Expires: - '0' Location: - - /api/v1/entities/admin/organizations/python-sdk-dex + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -153,44 +147,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '564' - Content-Type: - - application/vnd.gooddata.api+json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -201,61 +166,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -264,44 +211,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -312,9 +275,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace.yaml index d08fb1d41..0f06040b4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -60,46 +25,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -148,143 +113,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -309,19 +274,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -329,15 +294,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -479,6 +444,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -582,9 +548,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -807,9 +773,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1378,6 +1344,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1386,6 +1353,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1394,6 +1362,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1411,6 +1380,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1418,6 +1388,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1435,6 +1406,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1467,6 +1439,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1481,6 +1454,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1489,6 +1463,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1516,6 +1491,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1524,6 +1500,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1532,6 +1509,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1540,9 +1518,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1575,6 +1555,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1583,6 +1564,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1591,6 +1573,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1608,6 +1591,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1615,6 +1599,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1632,6 +1617,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1642,6 +1628,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1652,6 +1639,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1662,6 +1650,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1683,6 +1672,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1691,6 +1681,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1699,6 +1690,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1737,55 +1729,39 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json - DATE: *id001 + - application/json + DATE: &id001 + - PLACEHOLDER Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -1794,44 +1770,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -1842,38 +1834,20 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + Content-Length: + - '564' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' @@ -1882,9 +1856,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -1893,8 +1865,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo?exclude=ACTIVITY_INFO + response: body: string: analytics: @@ -1906,46 +1895,46 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: campaign @@ -1994,143 +1983,143 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' description: '' id: product_and_category @@ -2155,19 +2144,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -2175,15 +2164,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -2325,6 +2314,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2428,9 +2418,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2653,9 +2643,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3224,6 +3214,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -3232,6 +3223,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3240,6 +3232,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -3257,6 +3250,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -3264,6 +3258,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -3281,6 +3276,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3313,6 +3309,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -3327,6 +3324,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -3335,6 +3333,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -3362,6 +3361,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -3370,6 +3370,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -3378,6 +3379,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -3386,9 +3388,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -3421,6 +3425,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -3429,6 +3434,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -3437,6 +3443,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -3454,6 +3461,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -3461,6 +3469,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -3478,6 +3487,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3488,6 +3498,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -3498,6 +3509,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -3508,6 +3520,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -3529,6 +3542,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -3537,6 +3551,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -3545,6 +3560,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3583,55 +3599,38 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -3640,44 +3639,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -3688,9 +3703,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.yaml index 56e71d4ca..104b4f876 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspace_data_filters.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -14,38 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -77,33 +45,15 @@ interactions: workspace: id: demo_west_california type: workspace - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '603' Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -111,16 +61,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters + response: body: string: workspaceDataFilters: @@ -152,55 +120,36 @@ interactions: workspace: id: demo_west_california type: workspace - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '603' Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -209,44 +158,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -257,61 +222,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -320,44 +267,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -368,9 +331,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml index bc8a79444..1e365804d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -104,48 +69,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -188,7 +153,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -200,146 +165,146 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -351,7 +316,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -361,7 +326,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -374,19 +339,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -394,15 +359,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -412,7 +377,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -421,7 +386,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -431,7 +396,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -441,7 +406,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -451,7 +416,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -460,7 +425,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -469,7 +434,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -479,7 +444,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -489,7 +454,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -499,7 +464,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -509,7 +474,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -519,7 +484,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -529,7 +494,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -539,7 +504,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -550,7 +515,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -560,7 +525,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -570,7 +535,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -580,7 +545,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -589,7 +554,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -598,7 +563,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -607,7 +572,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -616,7 +581,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -625,7 +590,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -634,12 +599,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -699,7 +665,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -747,9 +713,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -775,7 +741,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -854,7 +820,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -913,7 +879,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -970,7 +936,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -988,9 +954,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1023,7 +989,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1098,7 +1064,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1155,7 +1121,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1254,7 +1220,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1310,7 +1276,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1349,7 +1315,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1405,7 +1371,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1473,7 +1439,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1530,7 +1496,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1587,7 +1553,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -1599,6 +1565,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1607,6 +1574,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1615,6 +1583,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1632,6 +1601,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1639,6 +1609,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1656,6 +1627,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1688,6 +1660,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1702,6 +1675,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1710,6 +1684,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1737,6 +1712,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1745,6 +1721,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1753,6 +1730,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1761,9 +1739,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1796,6 +1776,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1804,6 +1785,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1812,6 +1794,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1829,6 +1812,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1836,6 +1820,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1853,6 +1838,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1863,6 +1849,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1873,6 +1860,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1883,6 +1871,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1904,6 +1893,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1912,6 +1902,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1920,6 +1911,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1990,6 +1982,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -2024,6 +2017,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -2035,33 +2029,15 @@ interactions: permissions: [] settings: [] userDataFilters: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Encoding: - br Content-Type: - application/json - DATE: *id001 + DATE: &id001 + - PLACEHOLDER Expires: - '0' Pragma: @@ -2069,7 +2045,7 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Vary: @@ -2080,8 +2056,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces + response: body: string: workspaceDataFilters: @@ -2137,48 +2130,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2221,7 +2214,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2233,146 +2226,146 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and - Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and + Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2384,7 +2377,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2394,7 +2387,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2407,19 +2400,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -2427,15 +2420,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -2445,7 +2438,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2454,7 +2447,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2464,7 +2457,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2474,7 +2467,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2484,7 +2477,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2493,7 +2486,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2502,7 +2495,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2512,7 +2505,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2522,7 +2515,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2532,7 +2525,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2542,7 +2535,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2552,7 +2545,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2562,7 +2555,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2572,7 +2565,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2583,7 +2576,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2593,7 +2586,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2603,7 +2596,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2613,7 +2606,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2622,7 +2615,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2631,7 +2624,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2640,7 +2633,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2649,7 +2642,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2658,7 +2651,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2667,12 +2660,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2732,7 +2726,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2780,9 +2774,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2808,7 +2802,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2887,7 +2881,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -2946,7 +2940,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3003,7 +2997,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3021,9 +3015,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3056,7 +3050,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3131,7 +3125,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3188,7 +3182,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3287,7 +3281,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3343,7 +3337,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3382,7 +3376,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3438,7 +3432,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3506,7 +3500,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3563,7 +3557,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3620,7 +3614,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:15 + createdAt: 2026-04-01 14:33 createdBy: id: admin type: user @@ -3632,6 +3626,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -3640,6 +3635,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3648,6 +3644,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -3665,6 +3662,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -3672,6 +3670,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -3689,6 +3688,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3721,6 +3721,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -3735,6 +3736,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -3743,6 +3745,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -3770,6 +3773,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -3778,6 +3782,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -3786,6 +3791,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -3794,9 +3800,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -3829,6 +3837,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -3837,6 +3846,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -3845,6 +3855,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -3862,6 +3873,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -3869,6 +3881,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -3886,6 +3899,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3896,6 +3910,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -3906,6 +3921,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -3916,6 +3932,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -3937,6 +3954,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -3945,6 +3963,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -3953,6 +3972,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -4023,6 +4043,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasetExtensions: @@ -4057,6 +4078,7 @@ interactions: filterContexts: [] memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] ldm: datasets: [] @@ -4068,55 +4090,38 @@ interactions: permissions: [] settings: [] userDataFilters: [] - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -4125,44 +4130,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -4173,61 +4194,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '0' + - '564' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -4236,44 +4239,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -4284,9 +4303,40 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex + self: http://localhost:3000/api/v1/entities/admin/organizations/default + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '564' + Content-Type: + - application/vnd.gooddata.api+json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml index 58f8ac05c..88a6defa4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces body: null headers: Accept: @@ -14,15 +11,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: Demo + id: demo + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '199' Content-Type: @@ -32,28 +35,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo - id: demo - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: null headers: Accept: @@ -64,40 +60,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: analytics: @@ -109,48 +74,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -193,7 +158,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -205,145 +170,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -355,7 +320,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -365,7 +330,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -378,19 +343,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -398,15 +363,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -416,7 +381,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -425,7 +390,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -435,7 +400,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -445,7 +410,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -455,7 +420,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -464,7 +429,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -473,7 +438,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -483,7 +448,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -493,7 +458,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -503,7 +468,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -513,7 +478,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -523,7 +488,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -533,7 +498,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -543,7 +508,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -554,7 +519,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -564,7 +529,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -574,7 +539,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -584,7 +549,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -593,7 +558,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -602,7 +567,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -611,7 +576,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -620,7 +585,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -629,7 +594,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -638,12 +603,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -703,7 +669,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -751,9 +717,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -779,7 +745,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -858,7 +824,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -917,7 +883,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -974,7 +940,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -992,9 +958,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1027,7 +993,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1102,7 +1068,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1159,7 +1125,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1258,7 +1224,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1314,7 +1280,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1353,7 +1319,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1409,7 +1375,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1477,7 +1443,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1534,7 +1500,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1591,7 +1557,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -1603,6 +1569,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -1611,6 +1578,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1619,6 +1587,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -1636,6 +1605,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -1643,6 +1613,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -1660,6 +1631,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1692,6 +1664,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -1706,6 +1679,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -1714,6 +1688,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -1741,6 +1716,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -1749,6 +1725,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -1757,6 +1734,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -1765,9 +1743,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -1800,6 +1780,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -1808,6 +1789,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -1816,6 +1798,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -1833,6 +1816,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -1840,6 +1824,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -1857,6 +1842,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -1867,6 +1853,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -1877,6 +1864,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -1887,6 +1875,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -1908,6 +1897,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -1916,6 +1906,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -1924,6 +1915,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -1962,55 +1954,38 @@ interactions: tags: - Date title: Date - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/organization - body: null - headers: - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 302 - message: Found headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '0' + Content-Encoding: + - br Content-Type: - - application/vnd.gooddata.api+json + - application/json DATE: *id001 Expires: - '0' - Location: - - /api/v1/entities/admin/organizations/python-sdk-dex Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex body: null headers: Accept-Encoding: @@ -2019,44 +1994,60 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/organization response: - status: - code: 200 - message: OK + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '564' + - '0' Content-Type: - application/vnd.gooddata.api+json DATE: *id001 Expires: - '0' + Location: + - /api/v1/entities/admin/organizations/default Pragma: - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 302 + message: Found + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/admin/organizations/default + response: body: string: data: attributes: - name: Python SDK Dex - hostname: python-sdk-dex.dev-latest.stg11.panther.intgdc.com allowedOrigins: [] + dataCenter: '' earlyAccess: enableAlerting earlyAccessValues: - enableAlerting @@ -2067,64 +2058,43 @@ interactions: - enableUserManagement - enableRawExports - enableFlexibleDashboardLayout + hostname: localhost + name: Default Organization region: '' - dataCenter: '' - id: python-sdk-dex + id: default type: organization links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/admin/organizations/python-sdk-dex - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/admin/organizations/default headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive + - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '199' + - '564' Content-Type: - - application/json + - application/vnd.gooddata.api+json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo - id: demo - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo?include=workspaces + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo body: null headers: Accept: @@ -2135,30 +2105,30 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: Demo + id: demo + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo?include=workspaces headers: Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + - max-age=5, private + Content-Length: + - '199' Content-Type: - application/json DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -2167,8 +2137,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo + response: body: string: analytics: @@ -2180,48 +2167,48 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2264,7 +2251,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2276,145 +2263,145 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2426,7 +2413,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2436,7 +2423,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2449,19 +2436,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' description: '' id: campaign_name_filter @@ -2469,15 +2456,15 @@ interactions: - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' description: '' id: region_filter @@ -2487,7 +2474,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2496,7 +2483,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2506,7 +2493,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2516,7 +2503,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2526,7 +2513,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2535,7 +2522,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2544,7 +2531,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2554,7 +2541,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2564,7 +2551,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2574,7 +2561,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2584,7 +2571,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2594,7 +2581,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2604,7 +2591,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2614,7 +2601,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2625,7 +2612,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2635,7 +2622,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2645,7 +2632,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2655,7 +2642,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2664,7 +2651,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2673,7 +2660,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2682,7 +2669,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2691,7 +2678,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2700,7 +2687,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2709,12 +2696,13 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -2774,7 +2762,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2822,9 +2810,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -2850,7 +2838,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2929,7 +2917,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -2988,7 +2976,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3045,7 +3033,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3063,9 +3051,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -3098,7 +3086,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3173,7 +3161,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3230,7 +3218,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3329,7 +3317,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3385,7 +3373,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3424,7 +3412,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3480,7 +3468,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3548,7 +3536,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3605,7 +3593,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3662,7 +3650,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user @@ -3674,6 +3662,7 @@ interactions: attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -3682,6 +3671,7 @@ interactions: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -3690,6 +3680,7 @@ interactions: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -3707,6 +3698,7 @@ interactions: facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -3714,6 +3706,7 @@ interactions: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -3731,6 +3724,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3763,6 +3757,7 @@ interactions: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute @@ -3777,6 +3772,7 @@ interactions: attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -3785,6 +3781,7 @@ interactions: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING @@ -3812,6 +3809,7 @@ interactions: attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -3820,6 +3818,7 @@ interactions: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -3828,6 +3827,7 @@ interactions: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -3836,9 +3836,11 @@ interactions: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: @@ -3871,6 +3873,7 @@ interactions: attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -3879,6 +3882,7 @@ interactions: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -3887,6 +3891,7 @@ interactions: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -3904,6 +3909,7 @@ interactions: facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -3911,6 +3917,7 @@ interactions: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -3928,6 +3935,7 @@ interactions: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -3938,6 +3946,7 @@ interactions: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -3948,6 +3957,7 @@ interactions: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -3958,6 +3968,7 @@ interactions: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute @@ -3979,6 +3990,7 @@ interactions: attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -3987,6 +3999,7 @@ interactions: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -3995,6 +4008,7 @@ interactions: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -4033,9 +4047,38 @@ interactions: tags: - Date title: Date + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs?include=workspaces body: null headers: Accept: @@ -4046,15 +4089,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs?include=workspaces response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 6fa2be11508df59dc9c70afe3df71b8c headers: Cache-Control: - max-age=5, private - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -4063,32 +4110,27 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 09c2f8924707104e197f09159c37f74a + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces body: data: - id: demo_cs - type: workspace attributes: name: Demo (cs) + id: demo_cs + type: workspace headers: Accept: - application/json @@ -4100,15 +4142,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + name: Demo (cs) + id: demo_cs + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_cs headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '191' Content-Type: @@ -4121,28 +4169,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Demo (cs) - id: demo_cs - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: null headers: Accept: @@ -4153,37 +4194,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '603' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: workspaceDataFilters: @@ -4215,9 +4228,36 @@ interactions: workspace: id: demo_west_california type: workspace + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '603' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaceDataFilters body: workspaceDataFilters: - columnName: wdf__region @@ -4264,15 +4304,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaceDataFilters response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -4281,388 +4320,24 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo_cs body: - ldm: - datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - description: Campaign channels - attributes: - - id: campaign_channel_id - labels: [] - sourceColumn: campaign_channel_id - title: Campaign channel id - sourceColumnDataType: STRING - description: Campaign channel id - tags: - - Campaign channels - - id: campaign_channels.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Campaign channels - - id: type - labels: [] - sourceColumn: type - title: Type - sourceColumnDataType: STRING - description: Type - tags: - - Campaign channels - facts: - - id: budget - sourceColumn: budget - title: "Rozpo\u010Det" - sourceColumnDataType: NUMERIC - description: "Rozpo\u010Det" - tags: - - Campaign channels - - id: spend - sourceColumn: spend - title: Spend - sourceColumnDataType: NUMERIC - description: Spend - tags: - - Campaign channels - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaign_channels - type: dataSource - path: - - demo - - campaign_channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category - references: - - identifier: - id: campaign_channels - type: dataset - multivalue: false - sources: - - column: campaign_channel_id - target: - id: campaign_channel_id - type: attribute - dataType: STRING - title: Campaign channels per category - description: Campaign channels per categories - attributes: [] - facts: [] - aggregatedFacts: - - id: budget_agg - sourceColumn: budget - sourceFactReference: - operation: SUM - reference: - id: budget - type: fact - sourceColumnDataType: INT - description: Budget Agg - tags: - - Campaign channels per category - precedence: 1 - sql: - dataSourceId: demo-test-ds - statement: SELECT category, SUM(budget) FROM campaign_channels GROUP - BY category - tags: - - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - description: Campaigns - attributes: - - id: campaign_id - labels: [] - sourceColumn: campaign_id - title: Campaign id - sourceColumnDataType: INT - description: Campaign id - tags: - - Campaigns - - id: campaign_name - labels: [] - sourceColumn: campaign_name - title: Campaign name - sourceColumnDataType: STRING - description: Campaign name - tags: - - Campaigns - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: campaigns - type: dataSource - path: - - demo - - campaigns - tags: - - Campaigns - - grain: - - id: customer_id - type: attribute - id: customers - references: [] - title: Customers - description: Customers - attributes: - - id: customer_id - labels: [] - sourceColumn: customer_id - title: Customer id - sourceColumnDataType: INT - description: Customer id - tags: - - Customers - - id: customer_name - labels: [] - sourceColumn: customer_name - title: Customer name - sourceColumnDataType: STRING - description: Customer name - tags: - - Customers - - id: region - labels: [] - sourceColumn: region - title: Region - sourceColumnDataType: STRING - description: Region - tags: - - Customers - - id: state - labels: - - id: geo__state__location - sourceColumn: geo__state__location - title: Location - sourceColumnDataType: STRING - description: Location - tags: - - Customers - valueType: GEO - sourceColumn: state - title: State - sourceColumnDataType: STRING - description: State - tags: - - Customers - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: customers - type: dataSource - path: - - demo - - customers - tags: - - Customers - - grain: - - id: order_line_id - type: attribute - id: order_lines - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - - identifier: - id: customers - type: dataset - multivalue: false - sources: - - column: customer_id - target: - id: customer_id - type: attribute - dataType: INT - - identifier: - id: date - type: dataset - multivalue: false - sources: - - column: date - target: - id: date - type: date - dataType: DATE - - identifier: - id: products - type: dataset - multivalue: false - sources: - - column: product_id - target: - id: product_id - type: attribute - dataType: INT - title: Order lines - description: Order lines - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - sourceColumnDataType: STRING - description: Order id - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - sourceColumnDataType: STRING - description: Order line id - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - sourceColumnDataType: STRING - description: Order status - tags: - - Order lines - facts: - - id: price - sourceColumn: price - title: Price - sourceColumnDataType: NUMERIC - description: Price - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - sourceColumnDataType: NUMERIC - description: Quantity - tags: - - Order lines - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - tags: - - Order lines - workspaceDataFilterColumns: - - dataType: STRING - name: wdf__region - - dataType: STRING - name: wdf__state - workspaceDataFilterReferences: - - filterColumn: wdf__region - filterColumnDataType: STRING - filterId: - id: wdf__region_demo_cs - type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - description: Products - attributes: - - id: product_id - labels: [] - sourceColumn: product_id - title: Product id - sourceColumnDataType: INT - description: Product id - tags: - - Products - - id: product_name - labels: [] - sourceColumn: product_name - title: Product name - sourceColumnDataType: STRING - description: Product name - tags: - - Products - - id: products.category - labels: [] - sourceColumn: category - title: Category - sourceColumnDataType: STRING - description: Category - tags: - - Products - facts: [] - aggregatedFacts: [] - dataSourceTableId: - dataSourceId: demo-test-ds - id: products - type: dataSource - path: - - demo - - products - tags: - - Products - dateInstances: - - granularities: - - DAY - - WEEK - - MONTH - - QUARTER - - YEAR - granularitiesFormatting: - titleBase: '' - titlePattern: '%titleBase - %granularityTitle' - id: date - title: Date - description: '' - tags: - - Date analytics: + analyticalDashboardExtensions: [] analyticalDashboards: - content: filterContextRef: @@ -4670,58 +4345,58 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: null + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: null + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user description: '' + id: campaign permissions: - - name: VIEW - assigneeRule: + - assigneeRule: type: allWorkspaceUsers + name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -4754,452 +4429,454 @@ interactions: type: dashboardPlugin version: '2' version: '2' - id: dashboard_plugin - title: Dashboard plugin - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: dashboard_plugin + title: Dashboard plugin - content: filterContextRef: identifier: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: null - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: null + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: product_and_category - title: Product & Category - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user description: '' - analyticalDashboardExtensions: [] + id: product_and_category + title: Product & Category attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' - id: dashboard_plugin_1 - title: dashboard_plugin_1 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user description: Testing record dashboard_plugin_1 + id: dashboard_plugin_1 + title: dashboard_plugin_1 - content: url: https://www.example.com version: '2' - id: dashboard_plugin_2 - title: dashboard_plugin_2 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user description: Testing record dashboard_plugin_2 + id: dashboard_plugin_2 + title: dashboard_plugin_2 + exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - id: amount_of_active_customers - title: '# of Active Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: amount_of_active_customers + title: '# of Active Customers' - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - id: amount_of_orders - title: '# of Orders' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: amount_of_orders + title: '# of Orders' - content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - id: amount_of_top_customers - title: '# of Top Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: amount_of_top_customers + title: '# of Top Customers' - content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - id: amount_of_valid_orders - title: '# of Valid Orders' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user description: '' + id: amount_of_valid_orders + title: '# of Valid Orders' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: campaign_spend + title: Campaign Spend - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - id: order_amount - title: Order Amount - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: order_amount + title: Order Amount - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - id: percent_revenue - title: '% Revenue' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue + title: '% Revenue' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_customers - title: '% Revenue from Top 10 Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_from_top_10_customers + title: '% Revenue from Top 10 Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_customers - title: '% Revenue from Top 10% Customers' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_from_top_10_percent_customers + title: '% Revenue from Top 10% Customers' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_percent_products - title: '% Revenue from Top 10% Products' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_from_top_10_percent_products + title: '% Revenue from Top 10% Products' - content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - id: percent_revenue_from_top_10_products - title: '% Revenue from Top 10 Products' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_from_top_10_products + title: '% Revenue from Top 10 Products' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - id: percent_revenue_in_category - title: '% Revenue in Category' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_in_category + title: '% Revenue in Category' - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - id: percent_revenue_per_product - title: '% Revenue per Product' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_per_product + title: '% Revenue per Product' - content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - id: revenue - title: Revenue - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user description: '' + id: revenue + title: Revenue - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - id: revenue-clothing - title: Revenue (Clothing) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue-clothing + title: Revenue (Clothing) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - id: revenue-electronic - title: Revenue (Electronic) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue-electronic + title: Revenue (Electronic) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - id: revenue-home - title: Revenue (Home) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue-home + title: Revenue (Home) - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - id: revenue-outdoor - title: Revenue (Outdoor) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue-outdoor + title: Revenue (Outdoor) - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - id: revenue_per_customer - title: Revenue per Customer - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_per_customer + title: Revenue per Customer - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - id: revenue_per_dollar_spent - title: Revenue per Dollar Spent - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_per_dollar_spent + title: Revenue per Dollar Spent - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - id: revenue_top_10 - title: Revenue / Top 10 - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_top_10 + title: Revenue / Top 10 - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - id: revenue_top_10_percent - title: Revenue / Top 10% - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_top_10_percent + title: Revenue / Top 10% - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - id: total_revenue - title: Total Revenue - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: total_revenue + title: Total Revenue - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - id: total_revenue-no_filters - title: Total Revenue (No Filters) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: total_revenue-no_filters + title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -5259,12 +4936,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - id: campaign_spend - title: Campaign Spend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: campaign_spend + title: Campaign Spend - content: buckets: - items: @@ -5307,9 +4984,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -5335,12 +5012,12 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - id: customers_trend - title: Customers Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: customers_trend + title: Customers Trend - content: buckets: - items: @@ -5414,12 +5091,12 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - id: percent_revenue_per_product_by_customer_and_category - title: '% Revenue per Product by Customer and Category' - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percent_revenue_per_product_by_customer_and_category + title: '% Revenue per Product by Customer and Category' - content: buckets: - items: @@ -5473,12 +5150,12 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - id: percentage_of_customers_by_region - title: Percentage of Customers by Region - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: percentage_of_customers_by_region + title: Percentage of Customers by Region - content: buckets: - items: @@ -5530,12 +5207,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - id: product_breakdown - title: Product Breakdown - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: product_breakdown + title: Product Breakdown - content: buckets: - items: @@ -5548,9 +5225,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -5583,12 +5260,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - id: product_categories_pie_chart - title: Product Categories Pie Chart - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: product_categories_pie_chart + title: Product Categories Pie Chart - content: buckets: - items: @@ -5658,12 +5335,12 @@ interactions: visible: false version: '2' visualizationUrl: local:column - id: product_revenue_comparison-over_previous_period - title: Product Revenue Comparison (over previous period) - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: product_revenue_comparison-over_previous_period + title: Product Revenue Comparison (over previous period) - content: buckets: - items: @@ -5715,12 +5392,12 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - id: product_saleability - title: Product Saleability - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: product_saleability + title: Product Saleability - content: buckets: - items: @@ -5814,12 +5491,12 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - id: revenue_and_quantity_by_product_and_category - title: Revenue and Quantity by Product and Category - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_and_quantity_by_product_and_category + title: Revenue and Quantity by Product and Category - content: buckets: - items: @@ -5870,12 +5547,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - id: revenue_by_category_trend - title: Revenue by Category Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_by_category_trend + title: Revenue by Category Trend - content: buckets: - items: @@ -5909,12 +5586,12 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - id: revenue_by_product - title: Revenue by Product - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_by_product + title: Revenue by Product - content: buckets: - items: @@ -5965,12 +5642,12 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - id: revenue_per_usd_vs_spend_by_campaign - title: Revenue per $ vs Spend by Campaign - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_per_usd_vs_spend_by_campaign + title: Revenue per $ vs Spend by Campaign - content: buckets: - items: @@ -6033,12 +5710,12 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - id: revenue_trend - title: Revenue Trend - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: revenue_trend + title: Revenue Trend - content: buckets: - items: @@ -6090,12 +5767,12 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - id: top_10_customers - title: Top 10 Customers - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user + id: top_10_customers + title: Top 10 Customers - content: buckets: - items: @@ -6147,72 +5824,459 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - id: top_10_products - title: Top 10 Products - createdAt: 2026-03-25 09:16 + createdAt: 2026-04-01 14:35 createdBy: id: admin type: user - exportDefinitions: [] - memoryItems: [] - headers: - Accept-Encoding: - - br, gzip, deflate - Content-Type: - - application/json - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 204 - message: No Content - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' - - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings/locale - body: null - headers: - Accept-Encoding: + id: top_10_products + title: Top 10 Products + ldm: + datasets: + - aggregatedFacts: [] + attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource + description: Campaign channels + facts: + - description: "Rozpo\u010Det" + id: budget + isNullable: true + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: "Rozpo\u010Det" + - description: Spend + id: spend + isNullable: true + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category + attributes: [] + description: Campaign channels per categories + facts: [] + grain: [] + id: campaign_channels_per_category + precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute + sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP + BY category + tags: + - Campaign channels per category + title: Campaign channels per category + - aggregatedFacts: [] + attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name + dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource + description: Campaigns + facts: [] + grain: + - id: campaign_id + type: attribute + id: campaigns + references: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] + attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State + dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource + description: Customers + facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] + tags: + - Customers + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: + - id: order_line_id + type: attribute + id: order_lines + references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute + tags: + - Order lines + title: Order lines + workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state + workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region_demo_cs + type: workspaceDataFilter + - aggregatedFacts: [] + attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category + dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource + description: Products + facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] + tags: + - Products + title: Products + dateInstances: + - description: '' + granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR + granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' + id: date + tags: + - Date + title: Date + headers: + Accept-Encoding: - br, gzip, deflate + Content-Type: + - application/json X-GDC-VALIDATE-RELATIONS: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo_cs response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block status: code: 204 message: No Content + - request: + body: null + headers: + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings/locale + response: + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -6223,21 +6287,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings/formatLocale body: null headers: Accept-Encoding: @@ -6246,15 +6310,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings/formatLocale response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -6265,21 +6328,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings/locale body: null headers: Accept: @@ -6290,15 +6353,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings/locale response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 798390d35cb5ab9b22e642de58f71fa1 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -6311,34 +6378,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 8383fb8153ff6e4daa559d35616abc73 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings body: data: - type: workspaceSetting - id: locale attributes: content: value: cs-CZ type: LOCALE + id: locale + type: workspaceSetting headers: Accept: - application/json @@ -6350,15 +6412,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: cs-CZ + type: LOCALE + id: locale + meta: + origin: + originId: demo_cs + originType: NATIVE + type: workspaceSetting + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings/locale headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '310' Content-Type: @@ -6371,34 +6445,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: cs-CZ - type: LOCALE - id: locale - meta: - origin: - originId: demo_cs - originType: NATIVE - type: workspaceSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings/locale + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings/formatLocale body: null headers: Accept: @@ -6409,15 +6470,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings/formatLocale response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 1a364b252d8c4935522cd526cce8ed29 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -6430,34 +6495,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 08689621d179032578075347fca6793c + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings body: data: - type: workspaceSetting - id: formatLocale attributes: content: value: cs-CZ type: FORMAT_LOCALE + id: formatLocale + type: workspaceSetting headers: Accept: - application/json @@ -6469,15 +6529,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: cs-CZ + type: FORMAT_LOCALE + id: formatLocale + meta: + origin: + originId: demo_cs + originType: NATIVE + type: workspaceSetting + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_cs/workspaceSettings/formatLocale headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '329' Content-Type: @@ -6490,34 +6562,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: cs-CZ - type: FORMAT_LOCALE - id: formatLocale - meta: - origin: - originId: demo_cs - originType: NATIVE - type: workspaceSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_cs/workspaceSettings/formatLocale + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -6549,9 +6608,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -6563,6 +6620,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -6573,54 +6631,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -6661,200 +6719,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -6876,9 +6935,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -6934,9 +6993,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -6991,6 +7050,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -7094,9 +7154,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -7319,9 +7379,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -7884,207 +7944,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -8095,92 +8222,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -8192,51 +8274,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -8246,10 +8332,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -8261,12 +8347,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -8280,9 +8365,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -8294,18 +8380,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -8314,12 +8400,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -8335,15 +8423,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -8352,15 +8439,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_invalid.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_invalid.yaml index 1831f9002..b1c537a84 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_invalid.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_invalid.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces body: null headers: Accept: @@ -14,34 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '468' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -59,47 +31,23 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces headers: Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + - max-age=5, private + Content-Length: + - '468' Content-Type: - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache + DATE: &id001 + - PLACEHOLDER Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -108,8 +56,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -117,13 +82,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -134,7 +99,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -146,57 +111,62 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Length: - - '468' + - '255' Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + response: body: string: data: @@ -214,47 +184,22 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces headers: Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + - max-age=5, private + Content-Length: + - '468' Content-Type: - application/json DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -263,8 +208,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -272,13 +234,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -289,7 +251,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -301,57 +263,62 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Length: - - '468' + - '255' Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + response: body: string: data: @@ -369,7 +336,33 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '468' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_valid.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_valid.yaml index f4b8701a1..9c93c2fe2 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_valid.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_update_workspace_valid.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces body: null headers: Accept: @@ -14,34 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - max-age=5, private - Connection: - - keep-alive - Content-Length: - - '468' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -59,47 +31,23 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces headers: Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br + - max-age=5, private + Content-Length: + - '468' Content-Type: - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache + DATE: &id001 + - PLACEHOLDER Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked + - max-age=31536000; includeSubDomains; preload Vary: - Accept-Encoding - Origin @@ -108,8 +56,25 @@ interactions: X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + response: body: string: data: @@ -117,13 +82,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -134,7 +99,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -146,57 +111,62 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Length: - - '468' + - '255' Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + response: body: string: data: @@ -214,24 +184,47 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '468' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west body: data: - id: demo_west - type: workspace attributes: name: Test + id: demo_west relationships: parent: data: id: demo type: workspace + type: workspace headers: Accept: - application/json @@ -243,15 +236,21 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west response: - status: - code: 200 - message: OK + body: + string: + data: + attributes: + name: Test + id: demo_west + type: workspace + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo_west headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '190' Content-Type: @@ -264,28 +263,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - name: Test - id: demo_west - type: workspace - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -296,40 +288,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -337,13 +298,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Test id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -354,7 +315,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -366,57 +327,62 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Test id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 headers: Cache-Control: - - max-age=5, private - Connection: - - keep-alive + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br Content-Length: - - '463' + - '262' Content-Type: - application/json DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + response: body: string: data: @@ -434,13 +400,36 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west?include=workspaces + self: http://localhost:3000/api/v1/entities/workspaces/demo_west?include=workspaces + headers: + Cache-Control: + - max-age=5, private + Content-Length: + - '463' + Content-Type: + - application/json + DATE: *id001 + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces body: workspaceDataFilters: - columnName: wdf__region @@ -472,9 +461,7 @@ interactions: id: demo_west_california type: workspace workspaces: - - id: demo - name: Demo - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: @@ -486,6 +473,7 @@ interactions: id: demoGroup type: userGroup name: ANALYZE + id: demo model: analytics: analyticalDashboardExtensions: [] @@ -496,54 +484,54 @@ interactions: id: campaign_name_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - header: - title: Spend breakdown and Revenue + - header: description: The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue items: - - type: IDashboardLayoutItem - size: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Campaign Spend description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: campaign_spend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Campaign Spend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue per $ vs Spend by Campaign description: '' + drills: [] ignoreDashboardFilters: [] insight: identifier: id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - drills: [] properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' - id: campaign - title: Campaign description: '' + id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW + title: Campaign - content: filterContextRef: identifier: @@ -584,200 +572,201 @@ interactions: id: region_filter type: filterContext layout: - type: IDashboardLayout sections: - - type: IDashboardLayoutSection - items: - - type: IDashboardLayoutItem - size: + - items: + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Top 10 Products - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: top_10_products type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Top 10 Products + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Revenue Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: revenue_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Revenue Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Customers Trend - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: customers_trend type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Customers Trend + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Categories Pie Chart - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_categories_pie_chart type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Categories Pie Chart + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Breakdown - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_breakdown type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Breakdown + type: insight + - size: xl: gridWidth: 6 + type: IDashboardLayoutItem widget: - type: insight - title: Product Saleability - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: product_saleability type: visualizationObject - drills: [] properties: {} - - type: IDashboardLayoutItem - size: + title: Product Saleability + type: insight + - size: xl: gridWidth: 12 + type: IDashboardLayoutItem widget: - type: insight - title: '% Revenue per Product by Customer and Category' - description: '' - ignoreDashboardFilters: [] dateDataSet: identifier: id: date type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] insight: identifier: id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - drills: [] properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout version: '2' + description: '' id: product_and_category title: Product & Category - description: '' attributeHierarchies: [] dashboardPlugins: - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 - description: Testing record dashboard_plugin_1 - content: url: https://www.example.com version: '2' + description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 - description: Testing record dashboard_plugin_2 exportDefinitions: [] filterContexts: - content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true version: '2' + description: '' id: campaign_name_filter title: filterContext - description: '' - content: filters: - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: region type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true version: '2' + description: '' id: region_filter title: filterContext - description: '' + memoryItems: [] metrics: - content: format: '#,##0' @@ -799,9 +788,9 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: amount_of_valid_orders title: '# of Valid Orders' - description: '' - content: format: $#,##0 maql: SELECT SUM({fact/spend}) @@ -857,9 +846,9 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) + description: '' id: revenue title: Revenue - description: '' - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} @@ -914,6 +903,7 @@ interactions: maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER id: total_revenue-no_filters title: Total Revenue (No Filters) + parameters: [] visualizationObjects: - content: buckets: @@ -1017,9 +1007,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -1242,9 +1232,9 @@ interactions: identifier: id: revenue type: metric + format: '#,##0.00%' localIdentifier: 162b857af49d45769bc12604a5c192b9 title: '% Revenue' - format: '#,##0.00%' localIdentifier: measures - items: - attribute: @@ -1807,207 +1797,274 @@ interactions: visualizationUrl: local:bar id: top_10_products title: Top 10 Products - memoryItems: [] ldm: datasets: - - grain: - - id: campaign_channel_id - type: attribute - id: campaign_channels - references: - - identifier: - id: campaigns - type: dataset - multivalue: false - sources: - - column: campaign_id - target: - id: campaign_id - type: attribute - dataType: INT - title: Campaign channels - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: campaign_channel_id + - description: Campaign channel id + id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id - title: Campaign channel id - description: Campaign channel id sourceColumnDataType: STRING tags: - Campaign channels - - id: campaign_channels.category + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Campaign channels - - id: type + title: Category + - description: Type + id: type + isNullable: true labels: [] sourceColumn: type - title: Type - description: Type sourceColumnDataType: STRING tags: - Campaign channels + title: Type dataSourceTableId: dataSourceId: demo-test-ds id: campaign_channels - type: dataSource path: - demo - campaign_channels + type: dataSource description: Campaign channels facts: - - id: budget + - description: Budget + id: budget + isNullable: true sourceColumn: budget - title: Budget - description: Budget sourceColumnDataType: NUMERIC tags: - Campaign channels - - id: spend + title: Budget + - description: Spend + id: spend + isNullable: true sourceColumn: spend - title: Spend - description: Spend sourceColumnDataType: NUMERIC tags: - Campaign channels - tags: - - Campaign channels - - grain: [] - id: campaign_channels_per_category + title: Spend + grain: + - id: campaign_channel_id + type: attribute + id: campaign_channels references: - identifier: - id: campaign_channels + id: campaigns type: dataset multivalue: false sources: - - column: campaign_channel_id + - column: campaign_id + dataType: INT + isNullable: true target: - id: campaign_channel_id + id: campaign_id type: attribute - dataType: STRING - title: Campaign channels per category - aggregatedFacts: - - id: budget_agg + tags: + - Campaign channels + title: Campaign channels + - aggregatedFacts: + - description: Budget Agg + id: budget_agg sourceColumn: budget + sourceColumnDataType: INT sourceFactReference: operation: SUM reference: id: budget type: fact - description: Budget Agg - sourceColumnDataType: INT tags: - Campaign channels per category attributes: [] description: Campaign channels per categories facts: [] + grain: [] + id: campaign_channels_per_category precedence: 1 + references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute sql: dataSourceId: demo-test-ds statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category tags: - Campaign channels per category - - grain: - - id: campaign_id - type: attribute - id: campaigns - references: [] - title: Campaigns - aggregatedFacts: [] + title: Campaign channels per category + - aggregatedFacts: [] attributes: - - id: campaign_id + - description: Campaign id + id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id - title: Campaign id - description: Campaign id sourceColumnDataType: INT tags: - Campaigns - - id: campaign_name + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name - title: Campaign name - description: Campaign name sourceColumnDataType: STRING tags: - Campaigns + title: Campaign name dataSourceTableId: dataSourceId: demo-test-ds id: campaigns - type: dataSource path: - demo - campaigns + type: dataSource description: Campaigns facts: [] - tags: - - Campaigns - - grain: - - id: customer_id + grain: + - id: campaign_id type: attribute - id: customers + id: campaigns references: [] - title: Customers - aggregatedFacts: [] + tags: + - Campaigns + title: Campaigns + - aggregatedFacts: [] attributes: - - id: customer_id + - description: Customer id + id: customer_id + isNullable: false labels: [] sourceColumn: customer_id - title: Customer id - description: Customer id sourceColumnDataType: INT tags: - Customers - - id: customer_name + title: Customer id + - description: Customer name + id: customer_name + isNullable: true labels: [] sourceColumn: customer_name - title: Customer name - description: Customer name sourceColumnDataType: STRING tags: - Customers - - id: region + title: Customer name + - description: Region + id: region + isNullable: true labels: [] sourceColumn: region - title: Region - description: Region sourceColumnDataType: STRING tags: - Customers - - id: state + title: Region + - description: State + id: state + isNullable: true labels: - - id: geo__state__location + - description: Location + id: geo__state__location + isNullable: true sourceColumn: geo__state__location - title: Location - description: Location sourceColumnDataType: STRING tags: - Customers + title: Location valueType: GEO sourceColumn: state - title: State - description: State sourceColumnDataType: STRING tags: - Customers + title: State dataSourceTableId: dataSourceId: demo-test-ds id: customers - type: dataSource path: - demo - customers + type: dataSource description: Customers facts: [] + grain: + - id: customer_id + type: attribute + id: customers + references: [] tags: - Customers - - grain: + title: Customers + - aggregatedFacts: [] + attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status + dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource + description: Order lines + facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity + grain: - id: order_line_id type: attribute id: order_lines @@ -2018,92 +2075,47 @@ interactions: multivalue: false sources: - column: campaign_id + dataType: INT + isNullable: true target: id: campaign_id type: attribute - dataType: INT - identifier: id: customers type: dataset multivalue: false sources: - column: customer_id + dataType: INT + isNullable: true target: id: customer_id type: attribute - dataType: INT - identifier: id: date type: dataset multivalue: false sources: - column: date + dataType: DATE + isNullable: true target: id: date type: date - dataType: DATE - identifier: id: products type: dataset multivalue: false sources: - column: product_id + dataType: INT + isNullable: true target: id: product_id type: attribute - dataType: INT - title: Order lines - aggregatedFacts: [] - attributes: - - id: order_id - labels: [] - sourceColumn: order_id - title: Order id - description: Order id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_line_id - labels: [] - sourceColumn: order_line_id - title: Order line id - description: Order line id - sourceColumnDataType: STRING - tags: - - Order lines - - id: order_status - labels: [] - sourceColumn: order_status - title: Order status - description: Order status - sourceColumnDataType: STRING - tags: - - Order lines - dataSourceTableId: - dataSourceId: demo-test-ds - id: order_lines - type: dataSource - path: - - demo - - order_lines - description: Order lines - facts: - - id: price - sourceColumn: price - title: Price - description: Price - sourceColumnDataType: NUMERIC - tags: - - Order lines - - id: quantity - sourceColumn: quantity - title: Quantity - description: Quantity - sourceColumnDataType: NUMERIC - tags: - - Order lines tags: - Order lines + title: Order lines workspaceDataFilterColumns: - dataType: STRING name: wdf__region @@ -2115,51 +2127,55 @@ interactions: filterId: id: wdf__region type: workspaceDataFilter - - grain: - - id: product_id - type: attribute - id: products - references: [] - title: Products - aggregatedFacts: [] + - aggregatedFacts: [] attributes: - - id: product_id + - description: Product id + id: product_id + isNullable: false labels: [] sourceColumn: product_id - title: Product id - description: Product id sourceColumnDataType: INT tags: - Products - - id: product_name + title: Product id + - description: Product name + id: product_name + isNullable: true labels: [] sourceColumn: product_name - title: Product name - description: Product name sourceColumnDataType: STRING tags: - Products - - id: products.category + title: Product name + - description: Category + id: products.category + isNullable: true labels: [] sourceColumn: category - title: Category - description: Category sourceColumnDataType: STRING tags: - Products + title: Category dataSourceTableId: dataSourceId: demo-test-ds id: products - type: dataSource path: - demo - products + type: dataSource description: Products facts: [] + grain: + - id: product_id + type: attribute + id: products + references: [] tags: - Products + title: Products dateInstances: - - granularities: + - description: '' + granularities: - DAY - WEEK - MONTH @@ -2169,10 +2185,10 @@ interactions: titleBase: '' titlePattern: '%titleBase - %granularityTitle' id: date - title: Date - description: '' tags: - Date + title: Date + name: Demo permissions: - assignee: id: demo2 @@ -2184,12 +2200,11 @@ interactions: name: VIEW settings: [] userDataFilters: [] - - id: demo_west - name: Demo West - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west model: analytics: analyticalDashboardExtensions: @@ -2203,9 +2218,10 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasetExtensions: - id: order_lines @@ -2217,18 +2233,18 @@ interactions: type: workspaceDataFilter datasets: [] dateInstances: [] + name: Demo West parent: id: demo type: workspace permissions: [] settings: [] userDataFilters: [] - - id: demo_west_california - name: Demo West California - automations: [] + - automations: [] customApplicationSettings: [] filterViews: [] hierarchyPermissions: [] + id: demo_west_california model: analytics: analyticalDashboardExtensions: [] @@ -2237,12 +2253,14 @@ interactions: dashboardPlugins: [] exportDefinitions: [] filterContexts: [] + memoryItems: [] metrics: [] + parameters: [] visualizationObjects: [] - memoryItems: [] ldm: datasets: [] dateInstances: [] + name: Demo West California parent: id: demo_west type: workspace @@ -2258,15 +2276,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -2275,15 +2292,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_workspace_list.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_workspace_list.yaml index c20e076ae..a6e381804 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_workspace_list.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_workspace_list.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 body: null headers: Accept: @@ -14,41 +11,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -56,13 +21,13 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west relationships: parent: data: @@ -73,7 +38,7 @@ interactions: name: Demo West California id: demo_west_california links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west_california + self: http://localhost:3000/api/v1/entities/workspaces/demo_west_california relationships: parent: data: @@ -85,14 +50,47 @@ interactions: name: Demo id: demo links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo + self: http://localhost:3000/api/v1/entities/workspaces/demo type: workspace - attributes: name: Demo West id: demo_west links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo_west + self: http://localhost:3000/api/v1/entities/workspaces/demo_west type: workspace links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces?include=workspaces&page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '255' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml index 23396489a..c9a593777 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/get_metadata_localization.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/retrieve body: locale: fr-FR headers: @@ -17,41 +14,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/xml - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: filterContext + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_automations.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_automations.yaml index 3bd269165..8c5d06e91 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_automations.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_automations.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations body: null headers: Accept: @@ -14,10 +11,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations response: - status: - code: 200 - message: OK + body: + string: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -33,7 +31,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -41,20 +42,19 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: [] + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: http://localhost:3000/api/v1/layout/notificationChannels body: notificationChannels: - - id: webhook - name: Webhook - destination: + - destination: + token: '123' type: WEBHOOK url: https://webhook.site - token: '123' + id: webhook + name: Webhook headers: Accept-Encoding: - br, gzip, deflate @@ -64,10 +64,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/notificationChannels response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -78,7 +79,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -86,16 +90,13 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations body: - id: automation - state: ACTIVE - title: Automation metadata: key: value notificationChannel: @@ -103,8 +104,10 @@ interactions: type: notificationChannel schedule: cron: 0 0 0 ? * * - timezone: UTC firstRun: '2023-10-05T14:30:00+00:00' + timezone: UTC + state: ACTIVE + title: Automation headers: Accept-Encoding: - br, gzip, deflate @@ -114,10 +117,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -128,7 +132,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -136,12 +143,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations body: null headers: Accept: @@ -152,10 +158,24 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations response: - status: - code: 200 - message: OK + body: + string: + - evaluationMode: PER_RECIPIENT + id: automation + metadata: + key: value + notificationChannel: + id: webhook + type: notificationChannel + schedule: + cron: 0 0 0 ? * * + firstRun: '2023-10-05T14:30:00Z' + timezone: UTC + state: ACTIVE + title: Automation headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -170,7 +190,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -178,25 +201,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: - - evaluationMode: PER_RECIPIENT - id: automation - metadata: - key: value - notificationChannel: - id: webhook - type: notificationChannel - schedule: - cron: 0 0 0 ? * * - firstRun: '2023-10-05T14:30:00Z' - timezone: UTC - state: ACTIVE - title: Automation + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations body: [] headers: Accept-Encoding: @@ -207,10 +216,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/automations response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -221,7 +231,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -229,12 +242,11 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: PUT - uri: http://localhost:3000/api/v1/layout/notificationChannels body: notificationChannels: [] headers: @@ -246,10 +258,11 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/notificationChannels response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -260,7 +273,10 @@ interactions: - no-cache Referrer-Policy: - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers @@ -268,6 +284,8 @@ interactions: - nosniff X-GDC-TRACE-ID: *id001 X-Xss-Protection: - - '0' - body: - string: '' + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_filter_views.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_filter_views.yaml index bf948f6a3..d26464eae 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_filter_views.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/layout_filter_views.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/filterViews body: null headers: Accept: @@ -14,15 +11,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/filterViews response: - status: - code: 200 - message: OK + body: + string: [] headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '2' Content-Type: @@ -36,51 +32,51 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: [] + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/filterViews body: - - id: filter_view - title: Filter View - analyticalDashboard: + - analyticalDashboard: id: campaign type: analyticalDashboard content: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: demo:campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true selectionMode: multi version: '2' description: Filter View + id: filter_view isDefault: true tags: - tag1 - tag2 + title: Filter View user: id: demo type: user @@ -93,15 +89,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/filterViews response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -110,21 +105,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/filterViews body: null headers: Accept: @@ -135,37 +130,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/layout/workspaces/demo/filterViews response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '590' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: - analyticalDashboard: @@ -175,19 +142,19 @@ interactions: filters: - dateFilter: from: '0' - to: '0' granularity: GDC.time.month + to: '0' type: relative - attributeFilter: + attributeElements: + uris: [] displayForm: identifier: id: demo:campaign_name type: label - negativeSelection: true - attributeElements: - uris: [] - localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true selectionMode: multi version: '2' description: Filter View @@ -200,9 +167,36 @@ interactions: user: id: demo type: user + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '590' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: PUT - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/layout/workspaces/demo/filterViews body: [] headers: Accept-Encoding: @@ -213,15 +207,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: PUT + uri: http://localhost:3000/api/v1/layout/workspaces/demo/filterViews response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive DATE: *id001 Expires: - '0' @@ -230,15 +223,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml index 04ae3e271..5976e1d74 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 body: null headers: Accept: @@ -14,15 +11,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 3a8217578cb958457a39a08a1bcb3c44 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -36,34 +37,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 5aab2cfc6796a4f4bc54f30d013c80a7 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings body: data: - type: workspaceSetting - id: test_setting_1 attributes: content: value: fr-FR type: LOCALE + id: test_setting_1 + type: workspaceSetting headers: Accept: - application/json @@ -75,15 +71,27 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings response: - status: - code: 201 - message: Created + body: + string: + data: + attributes: + content: + value: fr-FR + type: LOCALE + id: test_setting_1 + meta: + origin: + originId: demo + originType: NATIVE + type: workspaceSetting + links: + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '320' Content-Type: @@ -96,34 +104,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - data: - attributes: - content: - value: fr-FR - type: LOCALE - id: test_setting_1 - meta: - origin: - originId: demo - originType: NATIVE - type: workspaceSetting - links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 body: null headers: Accept: @@ -134,15 +129,19 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 response: - status: - code: 404 - message: Not Found + body: + string: + detail: The requested endpoint does not exist or you do not have permission + to access it. + status: 404 + title: Not Found + traceId: 42784f246b7d7774fbf9f381990ac466 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '172' Content-Type: @@ -155,34 +154,29 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - detail: The requested endpoint does not exist or you do not have permission - to access it. - status: 404 - title: Not Found - traceId: 60a429950db2919f6fe9e37c15a8e874 + X-Xss-Protection: + - 1; mode=block + status: + code: 404 + message: Not Found - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings body: data: - type: workspaceSetting - id: test_setting_2 attributes: content: value: en-US type: FORMAT_LOCALE + id: test_setting_2 + type: workspaceSetting headers: Accept: - application/json @@ -194,37 +188,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings response: - status: - code: 201 - message: Created - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '327' - Content-Type: - - application/json - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: @@ -239,31 +205,12 @@ interactions: originType: NATIVE type: workspaceSetting links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 - - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 - body: null - headers: - Accept: - - application/json - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - response: - status: - code: 200 - message: OK + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - - '919' + - '327' Content-Type: - application/json DATE: *id001 @@ -274,16 +221,34 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created + - request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 + response: body: string: data: @@ -293,7 +258,7 @@ interactions: type: LOCALE id: test_setting_1 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 meta: origin: originId: demo @@ -305,18 +270,45 @@ interactions: type: FORMAT_LOCALE id: test_setting_2 links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 meta: origin: originId: demo originType: NATIVE type: workspaceSetting links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 - next: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings?page=1&size=500 + next: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings?page=1&size=500 + self: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings?page=0&size=500 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '919' + Content-Type: + - application/json + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 body: null headers: Accept-Encoding: @@ -325,15 +317,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_1 response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -344,21 +335,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content - request: - method: DELETE - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 body: null headers: Accept-Encoding: @@ -367,15 +358,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: DELETE + uri: http://localhost:3000/api/v1/entities/workspaces/demo/workspaceSettings/test_setting_2 response: - status: - code: 204 - message: No Content + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Type: - application/vnd.gooddata.api+json DATE: *id001 @@ -386,15 +376,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 204 + message: No Content +version: 1 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml index 9dae87d60..baf737e27 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/set_metadata_localization.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/retrieve body: locale: fr-FR headers: @@ -17,41 +14,9 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/translations/retrieve response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/xml - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: filterContext + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Type: + - application/xml + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/translations/set body: Campaign 10000 ' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: amount_of_top_customers title: '# of Top Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml index 85cd4b401..afb383c8c 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml @@ -1,8 +1,12 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: '' id: amount_of_valid_orders title: '# of Valid Orders' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml index 51f3a69d7..bd4548fb0 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT SUM({fact/spend}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml index b2e94475b..1b88daf8a 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: order_amount title: Order Amount diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml index 9622e37de..ddab0af77 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue title: '% Revenue' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml index 314490f19..94adae7f7 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY\ \ {attribute/customer_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_customers title: '% Revenue from Top 10 Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml index 873625bcd..eba46fdb5 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_customers title: '% Revenue from Top 10% Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml index 73c0f8ca6..c6d07b55a 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_products title: '% Revenue from Top 10% Products' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml index 121b620d1..51fe8f410 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY\ \ {attribute/product_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_products title: '% Revenue from Top 10 Products' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml index 89cf193f7..8fec04bf7 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_in_category title: '% Revenue in Category' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml index 9a6adb926..4e27a4d17 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_per_product title: '% Revenue per Product' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml index 8c47ed9c7..c2d8958f0 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-clothing title: Revenue (Clothing) diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml index 9b8c4aff2..e988971f7 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-electronic title: Revenue (Electronic) diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml index 5b0194c00..dc677d3a1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-home title: Revenue (Home) diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml index dd70790dc..533bf67e4 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-outdoor title: Revenue (Outdoor) diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml index 02bf52514..b98187605 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml @@ -1,8 +1,12 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: '' id: revenue title: Revenue diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml index 76449bd10..c9d75f40c 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_per_customer title: Revenue per Customer diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml index da0f499c6..1661d602d 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_per_dollar_spent title: Revenue per Dollar Spent diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml index 5b2972707..ddab56b48 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_top_10 title: Revenue / Top 10 diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml index 467283c90..b938c7967 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_top_10_percent title: Revenue / Top 10% diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml index 158e1495f..67941851c 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: total_revenue-no_filters title: Total Revenue (No Filters) diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml index e1690466b..3e190f201 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: total_revenue title: Total Revenue diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml index a60ecb270..4e9f33fe1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -57,5 +57,9 @@ content: position: bottom version: '2' visualizationUrl: local:treemap +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml index 0630281c4..0a19e96f1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -41,9 +41,9 @@ content: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -69,5 +69,9 @@ content: rotation: auto version: '2' visualizationUrl: local:combo2 +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: customers_trend title: Customers Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml index 369e9674a..ce0e12aad 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -72,5 +72,9 @@ content: direction: asc version: '2' visualizationUrl: local:table +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_per_product_by_customer_and_category title: '% Revenue per Product by Customer and Category' diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml index 1f266d114..32437bd17 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -52,5 +52,9 @@ content: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percentage_of_customers_by_region title: Percentage of Customers by Region diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml index 08c9ec345..0d4e7d6d4 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: position: bottom version: '2' visualizationUrl: local:treemap +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_breakdown title: Product Breakdown diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml index d1e7d73c5..9e02d59e8 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -46,5 +46,9 @@ content: position: bottom version: '2' visualizationUrl: local:donut +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_categories_pie_chart title: Product Categories Pie Chart diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml index 591f2eb3d..af598c523 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -68,5 +68,9 @@ content: visible: false version: '2' visualizationUrl: local:column +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_revenue_comparison-over_previous_period title: Product Revenue Comparison (over previous period) diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml index d759bf506..403c63d08 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: enabled: true version: '2' visualizationUrl: local:scatter +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_saleability title: Product Saleability diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml index f0cc61f00..72bbb6aea 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -92,5 +92,9 @@ content: direction: asc version: '2' visualizationUrl: local:table +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_and_quantity_by_product_and_category title: Revenue and Quantity by Product and Category diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml index 90b0316c4..ebcc49769 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -49,5 +49,9 @@ content: position: bottom version: '2' visualizationUrl: local:line +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_by_category_trend title: Revenue by Category Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml index e51c4fa75..698b5c4db 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -32,5 +32,9 @@ content: properties: {} version: '2' visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_by_product title: Revenue by Product diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml index cfc9e47f4..09b49faf6 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -49,5 +49,9 @@ content: min: '0' version: '2' visualizationUrl: local:scatter +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_per_usd_vs_spend_by_campaign title: Revenue per $ vs Spend by Campaign diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml index a6c113ac1..e6b384762 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -61,5 +61,9 @@ content: rotation: auto version: '2' visualizationUrl: local:combo2 +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_trend title: Revenue Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml index 67a40f29b..48956d131 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: position: bottom version: '2' visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: top_10_customers title: Top 10 Customers diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml index 2c9b84538..fd8061100 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: position: bottom version: '2' visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: top_10_products title: Top 10 Products diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/demo.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/demo.yaml index ae962d04c..50150a232 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/demo.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/demo.yaml @@ -1,4 +1,7 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation +automations: [] +customApplicationSettings: [] +filterViews: [] hierarchyPermissions: - assignee: id: demo2 @@ -20,3 +23,4 @@ permissions: type: userGroup name: VIEW settings: [] +userDataFilters: [] diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml index 3f1b3a936..af0934f91 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -11,6 +12,7 @@ attributes: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -36,6 +39,7 @@ description: Campaign channels facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -43,6 +47,7 @@ facts: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -60,6 +65,7 @@ references: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml index b25714c19..695f22706 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml @@ -1,4 +1,4 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: - description: Budget Agg id: budget_agg @@ -25,6 +25,7 @@ references: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml index 6146ae4fb..7135671f2 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -11,6 +12,7 @@ attributes: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml index 72f273e29..0068ffa44 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -11,6 +12,7 @@ attributes: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -27,9 +30,11 @@ attributes: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml index 3b039c5b4..795d4e15f 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -11,6 +12,7 @@ attributes: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -36,6 +39,7 @@ description: Order lines facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -43,6 +47,7 @@ facts: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -60,6 +65,7 @@ references: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -70,6 +76,7 @@ references: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -80,6 +87,7 @@ references: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -90,6 +98,7 @@ references: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml index 906618d68..05ae1a1e1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -11,6 +12,7 @@ attributes: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml index 7167131aa..23988163f 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation description: '' granularities: - DAY diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/analytics_model/analytical_dashboard_extensions/campaign.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/analytics_model/analytical_dashboard_extensions/campaign.yaml index 39569ec73..cd2c2c624 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/analytics_model/analytical_dashboard_extensions/campaign.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/analytics_model/analytical_dashboard_extensions/campaign.yaml @@ -1,6 +1,6 @@ -# (C) 2023 GoodData Corporation +# (C) 2026 GoodData Corporation +id: campaign permissions: - assigneeRule: type: allWorkspaceUsers name: VIEW -id: campaign diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/demo_west.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/demo_west.yaml index 1b659dd0f..81ad0db82 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/demo_west.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/demo_west.yaml @@ -1,4 +1,7 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation +automations: [] +customApplicationSettings: [] +filterViews: [] hierarchyPermissions: [] id: demo_west name: Demo West @@ -7,3 +10,4 @@ parent: type: workspace permissions: [] settings: [] +userDataFilters: [] diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/ldm/dataset_extensions/order_lines.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/ldm/dataset_extensions/order_lines.yaml index dae937ba8..ac3661671 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/ldm/dataset_extensions/order_lines.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west/ldm/dataset_extensions/order_lines.yaml @@ -1,4 +1,4 @@ -# (C) 2023 GoodData Corporation +# (C) 2026 GoodData Corporation id: order_lines workspaceDataFilterReferences: - filterColumn: wdf__state diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west_california/demo_west_california.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west_california/demo_west_california.yaml index 06b095f48..936f3eb97 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west_california/demo_west_california.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces/demo_west_california/demo_west_california.yaml @@ -1,4 +1,7 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation +automations: [] +customApplicationSettings: [] +filterViews: [] hierarchyPermissions: [] id: demo_west_california name: Demo West California @@ -7,3 +10,4 @@ parent: type: workspace permissions: [] settings: [] +userDataFilters: [] diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__region.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__region.yaml index c16c885fb..f508c802a 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__region.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__region.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation columnName: wdf__region id: wdf__region title: Customer region diff --git a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__state.yaml b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__state.yaml index e1b2e7641..186505ba3 100644 --- a/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__state.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/gooddata_layouts/default/workspaces_data_filters/wdf__state.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation columnName: wdf__state id: wdf__state title: Customer state diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/campaign.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/campaign.yaml new file mode 100644 index 000000000..5f7e5da18 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/campaign.yaml @@ -0,0 +1,58 @@ +# (C) 2026 GoodData Corporation +content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - header: + description: The first insight shows a breakdown of spend by category and + campaign. The second shows revenue per $ spend, for each campaign, to + demonstrate, how campaigns are successful. + title: Spend breakdown and Revenue + items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: campaign_spend + type: visualizationObject + properties: {} + title: Campaign Spend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_per_usd_vs_spend_by_campaign + type: visualizationObject + properties: {} + title: Revenue per $ vs Spend by Campaign + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +description: '' +id: campaign +permissions: + - assigneeRule: + type: allWorkspaceUsers + name: VIEW +title: Campaign diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/dashboard_plugin.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/dashboard_plugin.yaml new file mode 100644 index 000000000..10ef74512 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/dashboard_plugin.yaml @@ -0,0 +1,39 @@ +# (C) 2026 GoodData Corporation +content: + filterContextRef: + identifier: + id: campaign_name_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: DHO simple + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + plugins: + - plugin: + identifier: + id: dashboard_plugin_1 + type: dashboardPlugin + version: '2' + version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: dashboard_plugin +title: Dashboard plugin diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/product_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/product_and_category.yaml new file mode 100644 index 000000000..9f69fcc04 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/analytical_dashboards/product_and_category.yaml @@ -0,0 +1,152 @@ +# (C) 2026 GoodData Corporation +content: + filterContextRef: + identifier: + id: region_filter + type: filterContext + layout: + sections: + - items: + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: top_10_products + type: visualizationObject + properties: {} + title: Top 10 Products + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: revenue_trend + type: visualizationObject + properties: {} + title: Revenue Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: customers_trend + type: visualizationObject + properties: {} + title: Customers Trend + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_categories_pie_chart + type: visualizationObject + properties: {} + title: Product Categories Pie Chart + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_breakdown + type: visualizationObject + properties: {} + title: Product Breakdown + type: insight + - size: + xl: + gridWidth: 6 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: product_saleability + type: visualizationObject + properties: {} + title: Product Saleability + type: insight + - size: + xl: + gridWidth: 12 + type: IDashboardLayoutItem + widget: + dateDataSet: + identifier: + id: date + type: dataset + description: '' + drills: [] + ignoreDashboardFilters: [] + insight: + identifier: + id: percent_revenue_per_product_by_customer_and_category + type: visualizationObject + properties: {} + title: '% Revenue per Product by Customer and Category' + type: insight + type: IDashboardLayoutSection + type: IDashboardLayout + version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +description: '' +id: product_and_category +title: Product & Category diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml new file mode 100644 index 000000000..671c6f67b --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + url: https://www.example.com + version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +description: Testing record dashboard_plugin_1 +id: dashboard_plugin_1 +title: dashboard_plugin_1 diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml new file mode 100644 index 000000000..1fd152259 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + url: https://www.example.com + version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +description: Testing record dashboard_plugin_2 +id: dashboard_plugin_2 +title: dashboard_plugin_2 diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/campaign_name_filter.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/campaign_name_filter.yaml new file mode 100644 index 000000000..487887b4d --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/campaign_name_filter.yaml @@ -0,0 +1,22 @@ +# (C) 2026 GoodData Corporation +content: + filters: + - dateFilter: + from: '0' + granularity: GDC.time.month + to: '0' + type: relative + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: campaign_name + type: label + filterElementsBy: [] + localIdentifier: 14b0807447ef4bc28f43e4fc5c337d1d + negativeSelection: true + version: '2' +description: '' +id: campaign_name_filter +title: filterContext diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/region_filter.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/region_filter.yaml new file mode 100644 index 000000000..89417e583 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/filter_contexts/region_filter.yaml @@ -0,0 +1,17 @@ +# (C) 2026 GoodData Corporation +content: + filters: + - attributeFilter: + attributeElements: + uris: [] + displayForm: + identifier: + id: region + type: label + filterElementsBy: [] + localIdentifier: 2d5ef8df82444f6ba27b45f0990ee6af + negativeSelection: true + version: '2' +description: '' +id: region_filter +title: filterContext diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_active_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_active_customers.yaml new file mode 100644 index 000000000..86b7254dd --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_active_customers.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0' + maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: amount_of_active_customers +title: '# of Active Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_orders.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_orders.yaml new file mode 100644 index 000000000..966dd1cb6 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_orders.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0' + maql: SELECT COUNT({attribute/order_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: amount_of_orders +title: '# of Orders' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_top_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_top_customers.yaml new file mode 100644 index 000000000..8c8aa4017 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_top_customers.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0' + maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} + BY {attribute/customer_id}) > 10000 ' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: amount_of_top_customers +title: '# of Top Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml new file mode 100644 index 000000000..afb383c8c --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/amount_of_valid_orders.yaml @@ -0,0 +1,12 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.00' + maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", + "Canceled")) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +description: '' +id: amount_of_valid_orders +title: '# of Valid Orders' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml new file mode 100644 index 000000000..bd4548fb0 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/campaign_spend.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT SUM({fact/spend}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: campaign_spend +title: Campaign Spend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml new file mode 100644 index 000000000..1b88daf8a --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/order_amount.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT SUM({fact/price}*{fact/quantity}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: order_amount +title: Order Amount diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml new file mode 100644 index 000000000..ddab0af77 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / {metric/total_revenue} +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue +title: '% Revenue' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml new file mode 100644 index 000000000..94adae7f7 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY\ + \ {attribute/customer_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_from_top_10_customers +title: '% Revenue from Top 10 Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml new file mode 100644 index 000000000..eba46fdb5 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_from_top_10_percent_customers +title: '% Revenue from Top 10% Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml new file mode 100644 index 000000000..c6d07b55a --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ + \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_from_top_10_percent_products +title: '% Revenue from Top 10% Products' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml new file mode 100644 index 000000000..51fe8f410 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_from_top_10_products.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY\ + \ {attribute/product_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_from_top_10_products +title: '% Revenue from Top 10 Products' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml new file mode 100644 index 000000000..8fec04bf7 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_in_category.yaml @@ -0,0 +1,11 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, + ALL OTHER) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_in_category +title: '% Revenue in Category' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml new file mode 100644 index 000000000..4e27a4d17 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/percent_revenue_per_product.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: '#,##0.0%' + maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_per_product +title: '% Revenue per Product' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml new file mode 100644 index 000000000..c2d8958f0 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-clothing.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue-clothing +title: Revenue (Clothing) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml new file mode 100644 index 000000000..e988971f7 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-electronic.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue-electronic +title: Revenue (Electronic) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml new file mode 100644 index 000000000..dc677d3a1 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-home.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue-home +title: Revenue (Home) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml new file mode 100644 index 000000000..533bf67e4 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue-outdoor.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue-outdoor +title: Revenue (Outdoor) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml new file mode 100644 index 000000000..b98187605 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue.yaml @@ -0,0 +1,12 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", + "Canceled")) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +description: '' +id: revenue +title: Revenue diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml new file mode 100644 index 000000000..c9d75f40c --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_customer.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0.0 + maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_per_customer +title: Revenue per Customer diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml new file mode 100644 index 000000000..1661d602d --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_per_dollar_spent.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0.0 + maql: SELECT {metric/revenue} / {metric/campaign_spend} +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_per_dollar_spent +title: Revenue per Dollar Spent diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml new file mode 100644 index 000000000..ddab56b48 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_top_10 +title: Revenue / Top 10 diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml new file mode 100644 index 000000000..b938c7967 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/revenue_top_10_percent.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_top_10_percent +title: Revenue / Top 10% diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml new file mode 100644 index 000000000..67941851c --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue-no_filters.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: total_revenue-no_filters +title: Total Revenue (No Filters) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml new file mode 100644 index 000000000..3e190f201 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/metrics/total_revenue.yaml @@ -0,0 +1,10 @@ +# (C) 2026 GoodData Corporation +content: + format: $#,##0 + maql: SELECT {metric/revenue} BY ALL OTHER +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: total_revenue +title: Total Revenue diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml new file mode 100644 index 000000000..4e9f33fe1 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/campaign_spend.yaml @@ -0,0 +1,65 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: d319bcb2d8c04442a684e3b3cd063381 + title: Campaign Spend + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_channels.category + type: label + localIdentifier: 291c085e7df8420db84117ca49f59c49 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: d9dd143d647d4d148405a60ec2cf59bc + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: type + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_channels.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: campaign_spend +title: Campaign Spend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml new file mode 100644 index 000000000..0a19e96f1 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/customers_trend.yaml @@ -0,0 +1,77 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + alias: Active Customers + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 2ba0b87b59ca41a4b1530e81a5c1d081 + title: '# of Active Customers' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_customer + type: metric + localIdentifier: ec0606894b9f4897b7beaf1550608928 + title: Revenue per Customer + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 0de7d7f08af7480aa636857a26be72b6 + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -12 + granularity: GDC.time.month + to: -1 + properties: + controls: + colorMapping: + - color: + type: guid + value: '20' + id: 2ba0b87b59ca41a4b1530e81a5c1d081 + - color: + type: guid + value: '4' + id: ec0606894b9f4897b7beaf1550608928 + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - ec0606894b9f4897b7beaf1550608928 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: customers_trend +title: Customers Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml new file mode 100644 index 000000000..ce0e12aad --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml @@ -0,0 +1,80 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_per_product + type: metric + localIdentifier: 08d8346c1ce7438994b251991c0fbf65 + title: '% Revenue per Product' + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: b2350c06688b4da9b3833ebcce65527f + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: 7a4045fd00ac44579f52406df679435f + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 6a003ffd14994237ba64c4a02c488429 + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 75ea396d0c8b48098e31dccf8b5801d3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 7a4045fd00ac44579f52406df679435f + direction: asc + version: '2' + visualizationUrl: local:table +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percent_revenue_per_product_by_customer_and_category +title: '% Revenue per Product by Customer and Category' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml new file mode 100644 index 000000000..32437bd17 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml @@ -0,0 +1,60 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_active_customers + type: metric + localIdentifier: 1a14cdc1293c46e89a2e25d3e741d235 + title: '# of Active Customers' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: c1feca1864244ec2ace7a9b9d7fda231 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: region + type: label + localIdentifier: 530cddbd7ca04d039e73462d81ed44d5 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: region + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + properties: + controls: + legend: + position: bottom + stackMeasuresToPercent: true + version: '2' + visualizationUrl: local:area +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: percentage_of_customers_by_region +title: Percentage of Customers by Region diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml new file mode 100644 index 000000000..0d4e7d6d4 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_breakdown.yaml @@ -0,0 +1,58 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 590d332ef686468b8878ae41b23341c6 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: b166c71091864312a14c7ae8ff886ffe + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: e920a50e0bbb49788df0aac53634c1cd + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:treemap +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: product_breakdown +title: Product Breakdown diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml new file mode 100644 index 000000000..9e02d59e8 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_categories_pie_chart.yaml @@ -0,0 +1,54 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: true + filters: [] + item: + identifier: + id: revenue + type: metric + format: '#,##0.00%' + localIdentifier: 162b857af49d45769bc12604a5c192b9 + title: '% Revenue' + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + legend: + position: bottom + version: '2' + visualizationUrl: local:donut +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: product_categories_pie_chart +title: Product Categories Pie Chart diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml new file mode 100644 index 000000000..af598c523 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml @@ -0,0 +1,76 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + alias: Previous Period + definition: + popMeasureDefinition: + measureIdentifier: c82e025fa2db4afea9a600a424591dbe + popAttribute: + identifier: + id: date.year + type: attribute + localIdentifier: c82e025fa2db4afea9a600a424591dbe_pop + - measure: + alias: This Period + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: c82e025fa2db4afea9a600a424591dbe + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: c804ef5ba7944a5a9f360c86a9e95e9a + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -11 + granularity: GDC.time.month + to: 0 + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + stackMeasures: false + xaxis: + name: + visible: false + yaxis: + name: + visible: false + version: '2' + visualizationUrl: local:column +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: product_revenue_comparison-over_previous_period +title: Product Revenue Comparison (over previous period) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml new file mode 100644 index 000000000..403c63d08 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/product_saleability.yaml @@ -0,0 +1,58 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: aeb5d51a162d4b59aba3bd6ddebcc780 + title: '# of Orders' + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 94b3edd3a73c4a48a4d13bbe9442cc98 + title: Revenue + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: d2a991bdd123448eb2be73d79f1180c4 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: + controls: + dataLabels: + visible: auto + grid: + enabled: true + version: '2' + visualizationUrl: local:scatter +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: product_saleability +title: Product Saleability diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml new file mode 100644 index 000000000..72bbb6aea --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml @@ -0,0 +1,100 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + alias: Items Sold + definition: + measureDefinition: + aggregation: sum + filters: [] + item: + identifier: + id: quantity + type: fact + format: '#,##0.00' + localIdentifier: 29486504dd0e4a36a18b0b2f792d3a46 + title: Sum of Quantity + - measure: + definition: + measureDefinition: + aggregation: avg + filters: [] + item: + identifier: + id: price + type: fact + format: '#,##0.00' + localIdentifier: aa6391acccf1452f8011201aef9af492 + title: Avg Price + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: percent_revenue_in_category + type: metric + localIdentifier: 2cd39539d8da46c9883e63caa3ba7cc0 + title: '% Revenue in Category' + - measure: + alias: Total Revenue + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 9a0f08331c094c7facf2a0b4f418de0a + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 06bc6b3b9949466494e4f594c11f1bff + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 192668bfb6a74e9ab7b5d1ce7cb68ea3 + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: {} + sorts: + - attributeSortItem: + attributeIdentifier: 06bc6b3b9949466494e4f594c11f1bff + direction: asc + version: '2' + visualizationUrl: local:table +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_and_quantity_by_product_and_category +title: Revenue and Quantity by Product and Category diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml new file mode 100644 index 000000000..ebcc49769 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_category_trend.yaml @@ -0,0 +1,57 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 7df6c34387744d69b23ec92e1a5cf543 + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 4bb4fc1986c546de9ad976e6ec23fed4 + localIdentifier: trend + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: 34bddcb1cd024902a82396216b0fa9d8 + localIdentifier: segment + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + granularity: GDC.time.year + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:line +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_by_category_trend +title: Revenue by Category Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml new file mode 100644 index 000000000..698b5c4db --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_by_product.yaml @@ -0,0 +1,40 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 4ae3401bdbba4938afe983df4ba04e1c + title: Revenue + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 1c8ba72dbfc84ddd913bf81dc355c427 + localIdentifier: view + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + properties: {} + version: '2' + visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_by_product +title: Revenue by Product diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml new file mode 100644 index 000000000..09b49faf6 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml @@ -0,0 +1,57 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: campaign_spend + type: metric + localIdentifier: 13a50d811e474ac6808d8da7f4673b35 + title: Campaign Spend + localIdentifier: measures + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_per_dollar_spent + type: metric + localIdentifier: a0f15e82e6334280a44dbedc7d086e7c + title: Revenue per Dollar Spent + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: campaign_name + type: label + localIdentifier: 1d9fa968bafb423eb29c938dfb1207ff + localIdentifier: attribute + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: campaign_name + type: label + notIn: + values: [] + properties: + controls: + xaxis: + min: '0' + yaxis: + min: '0' + version: '2' + visualizationUrl: local:scatter +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_per_usd_vs_spend_by_campaign +title: Revenue per $ vs Spend by Campaign diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml new file mode 100644 index 000000000..e6b384762 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/revenue_trend.yaml @@ -0,0 +1,69 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: revenue + type: metric + localIdentifier: 60c854969a9c4c278ab596d99c222e92 + title: Revenue + localIdentifier: measures + - items: + - measure: + alias: Number of Orders + definition: + measureDefinition: + computeRatio: false + filters: [] + item: + identifier: + id: amount_of_orders + type: metric + localIdentifier: c2fa7ef48cc54af99f8c280eb451e051 + title: '# of Orders' + localIdentifier: secondary_measures + - items: + - attribute: + displayForm: + identifier: + id: date.month + type: label + localIdentifier: 413ac374b65648fa96826ca01d47bdda + localIdentifier: view + filters: + - relativeDateFilter: + dataSet: + identifier: + id: date + type: dataset + from: -3 + granularity: GDC.time.quarter + to: 0 + properties: + controls: + dualAxis: true + legend: + position: bottom + primaryChartType: column + secondaryChartType: line + secondary_yaxis: + measures: + - c2fa7ef48cc54af99f8c280eb451e051 + xaxis: + name: + visible: false + rotation: auto + version: '2' + visualizationUrl: local:combo2 +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: revenue_trend +title: Revenue Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml new file mode 100644 index 000000000..48956d131 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_customers.yaml @@ -0,0 +1,58 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 3f127ccfe57a40399e23f9ae2a4ad810 + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: customer_name + type: label + localIdentifier: f4e39e24f11e4827a191c30d65c89d2c + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: state + type: label + localIdentifier: bbccd430176d428caed54c99afc9589e + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: customer_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: state + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: top_10_customers +title: Top 10 Customers diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml new file mode 100644 index 000000000..fd8061100 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/analytics_model/visualization_objects/top_10_products.yaml @@ -0,0 +1,58 @@ +# (C) 2026 GoodData Corporation +content: + buckets: + - items: + - measure: + definition: + measureDefinition: + filters: [] + item: + identifier: + id: revenue_top_10 + type: metric + localIdentifier: 77dc71bbac92412bac5f94284a5919df + title: Revenue / Top 10 + localIdentifier: measures + - items: + - attribute: + displayForm: + identifier: + id: product_name + type: label + localIdentifier: 781952e728204dcf923142910cc22ae2 + localIdentifier: view + - items: + - attribute: + displayForm: + identifier: + id: products.category + type: label + localIdentifier: fe513cef1c6244a5ac21c5f49c56b108 + localIdentifier: stack + filters: + - negativeAttributeFilter: + displayForm: + identifier: + id: product_name + type: label + notIn: + values: [] + - negativeAttributeFilter: + displayForm: + identifier: + id: products.category + type: label + notIn: + values: [] + properties: + controls: + legend: + position: bottom + version: '2' + visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user +id: top_10_products +title: Top 10 Products diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml new file mode 100644 index 000000000..af0934f91 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels.yaml @@ -0,0 +1,74 @@ +# (C) 2026 GoodData Corporation +aggregatedFacts: [] +attributes: + - description: Campaign channel id + id: campaign_channel_id + isNullable: false + labels: [] + sourceColumn: campaign_channel_id + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Campaign channel id + - description: Category + id: campaign_channels.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Category + - description: Type + id: type + isNullable: true + labels: [] + sourceColumn: type + sourceColumnDataType: STRING + tags: + - Campaign channels + title: Type +dataSourceTableId: + dataSourceId: demo-test-ds + id: campaign_channels + path: + - demo + - campaign_channels + type: dataSource +description: Campaign channels +facts: + - description: Budget + id: budget + isNullable: true + sourceColumn: budget + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Budget + - description: Spend + id: spend + isNullable: true + sourceColumn: spend + sourceColumnDataType: NUMERIC + tags: + - Campaign channels + title: Spend +grain: + - id: campaign_channel_id + type: attribute +id: campaign_channels +references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute +tags: + - Campaign channels +title: Campaign channels diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml new file mode 100644 index 000000000..695f22706 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaign_channels_per_category.yaml @@ -0,0 +1,37 @@ +# (C) 2026 GoodData Corporation +aggregatedFacts: + - description: Budget Agg + id: budget_agg + sourceColumn: budget + sourceColumnDataType: INT + sourceFactReference: + operation: SUM + reference: + id: budget + type: fact + tags: + - Campaign channels per category +attributes: [] +description: Campaign channels per categories +facts: [] +grain: [] +id: campaign_channels_per_category +precedence: 1 +references: + - identifier: + id: campaign_channels + type: dataset + multivalue: false + sources: + - column: campaign_channel_id + dataType: STRING + isNullable: true + target: + id: campaign_channel_id + type: attribute +sql: + dataSourceId: demo-test-ds + statement: SELECT category, SUM(budget) FROM campaign_channels GROUP BY category +tags: + - Campaign channels per category +title: Campaign channels per category diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml new file mode 100644 index 000000000..7135671f2 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/campaigns.yaml @@ -0,0 +1,38 @@ +# (C) 2026 GoodData Corporation +aggregatedFacts: [] +attributes: + - description: Campaign id + id: campaign_id + isNullable: false + labels: [] + sourceColumn: campaign_id + sourceColumnDataType: INT + tags: + - Campaigns + title: Campaign id + - description: Campaign name + id: campaign_name + isNullable: true + labels: [] + sourceColumn: campaign_name + sourceColumnDataType: STRING + tags: + - Campaigns + title: Campaign name +dataSourceTableId: + dataSourceId: demo-test-ds + id: campaigns + path: + - demo + - campaigns + type: dataSource +description: Campaigns +facts: [] +grain: + - id: campaign_id + type: attribute +id: campaigns +references: [] +tags: + - Campaigns +title: Campaigns diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml new file mode 100644 index 000000000..0068ffa44 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/customers.yaml @@ -0,0 +1,65 @@ +# (C) 2026 GoodData Corporation +aggregatedFacts: [] +attributes: + - description: Customer id + id: customer_id + isNullable: false + labels: [] + sourceColumn: customer_id + sourceColumnDataType: INT + tags: + - Customers + title: Customer id + - description: Customer name + id: customer_name + isNullable: true + labels: [] + sourceColumn: customer_name + sourceColumnDataType: STRING + tags: + - Customers + title: Customer name + - description: Region + id: region + isNullable: true + labels: [] + sourceColumn: region + sourceColumnDataType: STRING + tags: + - Customers + title: Region + - description: State + id: state + isNullable: true + labels: + - description: Location + id: geo__state__location + isNullable: true + sourceColumn: geo__state__location + sourceColumnDataType: STRING + tags: + - Customers + title: Location + valueType: GEO + sourceColumn: state + sourceColumnDataType: STRING + tags: + - Customers + title: State +dataSourceTableId: + dataSourceId: demo-test-ds + id: customers + path: + - demo + - customers + type: dataSource +description: Customers +facts: [] +grain: + - id: customer_id + type: attribute +id: customers +references: [] +tags: + - Customers +title: Customers diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml new file mode 100644 index 000000000..795d4e15f --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/order_lines.yaml @@ -0,0 +1,118 @@ +# (C) 2026 GoodData Corporation +aggregatedFacts: [] +attributes: + - description: Order id + id: order_id + isNullable: true + labels: [] + sourceColumn: order_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order id + - description: Order line id + id: order_line_id + isNullable: false + labels: [] + sourceColumn: order_line_id + sourceColumnDataType: STRING + tags: + - Order lines + title: Order line id + - description: Order status + id: order_status + isNullable: true + labels: [] + sourceColumn: order_status + sourceColumnDataType: STRING + tags: + - Order lines + title: Order status +dataSourceTableId: + dataSourceId: demo-test-ds + id: order_lines + path: + - demo + - order_lines + type: dataSource +description: Order lines +facts: + - description: Price + id: price + isNullable: true + sourceColumn: price + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Price + - description: Quantity + id: quantity + isNullable: true + sourceColumn: quantity + sourceColumnDataType: NUMERIC + tags: + - Order lines + title: Quantity +grain: + - id: order_line_id + type: attribute +id: order_lines +references: + - identifier: + id: campaigns + type: dataset + multivalue: false + sources: + - column: campaign_id + dataType: INT + isNullable: true + target: + id: campaign_id + type: attribute + - identifier: + id: customers + type: dataset + multivalue: false + sources: + - column: customer_id + dataType: INT + isNullable: true + target: + id: customer_id + type: attribute + - identifier: + id: date + type: dataset + multivalue: false + sources: + - column: date + dataType: DATE + isNullable: true + target: + id: date + type: date + - identifier: + id: products + type: dataset + multivalue: false + sources: + - column: product_id + dataType: INT + isNullable: true + target: + id: product_id + type: attribute +tags: + - Order lines +title: Order lines +workspaceDataFilterColumns: + - dataType: STRING + name: wdf__region + - dataType: STRING + name: wdf__state +workspaceDataFilterReferences: + - filterColumn: wdf__region + filterColumnDataType: STRING + filterId: + id: wdf__region + type: workspaceDataFilter diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml new file mode 100644 index 000000000..05ae1a1e1 --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/datasets/products.yaml @@ -0,0 +1,47 @@ +# (C) 2026 GoodData Corporation +aggregatedFacts: [] +attributes: + - description: Product id + id: product_id + isNullable: false + labels: [] + sourceColumn: product_id + sourceColumnDataType: INT + tags: + - Products + title: Product id + - description: Product name + id: product_name + isNullable: true + labels: [] + sourceColumn: product_name + sourceColumnDataType: STRING + tags: + - Products + title: Product name + - description: Category + id: products.category + isNullable: true + labels: [] + sourceColumn: category + sourceColumnDataType: STRING + tags: + - Products + title: Category +dataSourceTableId: + dataSourceId: demo-test-ds + id: products + path: + - demo + - products + type: dataSource +description: Products +facts: [] +grain: + - id: product_id + type: attribute +id: products +references: [] +tags: + - Products +title: Products diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml new file mode 100644 index 000000000..23988163f --- /dev/null +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo/ldm/date_instances/date.yaml @@ -0,0 +1,15 @@ +# (C) 2026 GoodData Corporation +description: '' +granularities: + - DAY + - WEEK + - MONTH + - QUARTER + - YEAR +granularitiesFormatting: + titleBase: '' + titlePattern: '%titleBase - %granularityTitle' +id: date +tags: + - Date +title: Date diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/campaign.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/campaign.yaml index b469aaec1..5f7e5da18 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/campaign.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/campaign.yaml @@ -1,4 +1,4 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation content: filterContextRef: identifier: @@ -45,6 +45,10 @@ content: type: IDashboardLayoutSection type: IDashboardLayout version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: '' id: campaign permissions: diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/dashboard_plugin.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/dashboard_plugin.yaml index ebe374b58..10ef74512 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/dashboard_plugin.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/dashboard_plugin.yaml @@ -1,4 +1,4 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation content: filterContextRef: identifier: @@ -31,5 +31,9 @@ content: type: dashboardPlugin version: '2' version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: dashboard_plugin title: Dashboard plugin diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/product_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/product_and_category.yaml index 81d890fd9..9f69fcc04 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/product_and_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/analytical_dashboards/product_and_category.yaml @@ -1,4 +1,4 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation content: filterContextRef: identifier: @@ -143,6 +143,10 @@ content: type: IDashboardLayoutSection type: IDashboardLayout version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: '' id: product_and_category title: Product & Category diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml index 8b07f1130..671c6f67b 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_1.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: url: https://www.example.com version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: Testing record dashboard_plugin_1 id: dashboard_plugin_1 title: dashboard_plugin_1 diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml index 144c58ba6..1fd152259 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/dashboard_plugins/dashboard_plugin_2.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: url: https://www.example.com version: '2' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: Testing record dashboard_plugin_2 id: dashboard_plugin_2 title: dashboard_plugin_2 diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/campaign_name_filter.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/campaign_name_filter.yaml index 181084c8d..487887b4d 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/campaign_name_filter.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/campaign_name_filter.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: filters: - dateFilter: diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/region_filter.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/region_filter.yaml index 0f52e0e6c..89417e583 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/region_filter.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/filter_contexts/region_filter.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: filters: - attributeFilter: diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_active_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_active_customers.yaml index 00dee088c..86b7254dd 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_active_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_active_customers.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: amount_of_active_customers title: '# of Active Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_orders.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_orders.yaml index 44728cdd6..966dd1cb6 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_orders.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_orders.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: amount_of_orders title: '# of Orders' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_top_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_top_customers.yaml index cbc241929..8c8aa4017 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_top_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_top_customers.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: amount_of_top_customers title: '# of Top Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_valid_orders.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_valid_orders.yaml index 85cd4b401..afb383c8c 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_valid_orders.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/amount_of_valid_orders.yaml @@ -1,8 +1,12 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: '' id: amount_of_valid_orders title: '# of Valid Orders' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/campaign_spend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/campaign_spend.yaml index 51f3a69d7..bd4548fb0 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/campaign_spend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/campaign_spend.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT SUM({fact/spend}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/order_amount.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/order_amount.yaml index b2e94475b..1b88daf8a 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/order_amount.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/order_amount.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: order_amount title: Order Amount diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue.yaml index 9622e37de..ddab0af77 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue title: '% Revenue' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml index 314490f19..94adae7f7 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_customers.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY\ \ {attribute/customer_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_customers title: '% Revenue from Top 10 Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml index 873625bcd..eba46fdb5 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_customers.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_customers title: '% Revenue from Top 10% Customers' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml index 73c0f8ca6..c6d07b55a 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_percent_products.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_percent_products title: '% Revenue from Top 10% Products' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_products.yaml index 121b620d1..51fe8f410 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_from_top_10_products.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY\ \ {attribute/product_id}) > 0)\n /\n {metric/revenue}" +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_from_top_10_products title: '% Revenue from Top 10 Products' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_in_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_in_category.yaml index 89cf193f7..8fec04bf7 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_in_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_in_category.yaml @@ -1,7 +1,11 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_in_category title: '% Revenue in Category' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_per_product.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_per_product.yaml index 9a6adb926..4e27a4d17 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_per_product.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/percent_revenue_per_product.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_per_product title: '% Revenue per Product' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-clothing.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-clothing.yaml index 8c47ed9c7..c2d8958f0 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-clothing.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-clothing.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-clothing title: Revenue (Clothing) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-electronic.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-electronic.yaml index 9b8c4aff2..e988971f7 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-electronic.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-electronic.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-electronic title: Revenue (Electronic) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-home.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-home.yaml index 5b0194c00..dc677d3a1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-home.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-home.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-home title: Revenue (Home) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-outdoor.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-outdoor.yaml index dd70790dc..533bf67e4 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-outdoor.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue-outdoor.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue-outdoor title: Revenue (Outdoor) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue.yaml index 02bf52514..b98187605 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue.yaml @@ -1,8 +1,12 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user description: '' id: revenue title: Revenue diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_customer.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_customer.yaml index 76449bd10..c9d75f40c 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_customer.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_customer.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_per_customer title: Revenue per Customer diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_dollar_spent.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_dollar_spent.yaml index da0f499c6..1661d602d 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_dollar_spent.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_per_dollar_spent.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_per_dollar_spent title: Revenue per Dollar Spent diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10.yaml index 5b2972707..ddab56b48 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_top_10 title: Revenue / Top 10 diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10_percent.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10_percent.yaml index 467283c90..b938c7967 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10_percent.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/revenue_top_10_percent.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_top_10_percent title: Revenue / Top 10% diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue-no_filters.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue-no_filters.yaml index 158e1495f..67941851c 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue-no_filters.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue-no_filters.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: total_revenue-no_filters title: Total Revenue (No Filters) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue.yaml index e1690466b..3e190f201 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/metrics/total_revenue.yaml @@ -1,6 +1,10 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: total_revenue title: Total Revenue diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/campaign_spend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/campaign_spend.yaml index a60ecb270..4e9f33fe1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/campaign_spend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/campaign_spend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -57,5 +57,9 @@ content: position: bottom version: '2' visualizationUrl: local:treemap +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: campaign_spend title: Campaign Spend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/customers_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/customers_trend.yaml index 0630281c4..0a19e96f1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/customers_trend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/customers_trend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -41,9 +41,9 @@ content: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -69,5 +69,9 @@ content: rotation: auto version: '2' visualizationUrl: local:combo2 +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: customers_trend title: Customers Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml index 369e9674a..ce0e12aad 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percent_revenue_per_product_by_customer_and_category.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -72,5 +72,9 @@ content: direction: asc version: '2' visualizationUrl: local:table +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percent_revenue_per_product_by_customer_and_category title: '% Revenue per Product by Customer and Category' diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml index 1f266d114..32437bd17 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/percentage_of_customers_by_region.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -52,5 +52,9 @@ content: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: percentage_of_customers_by_region title: Percentage of Customers by Region diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_breakdown.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_breakdown.yaml index 08c9ec345..0d4e7d6d4 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_breakdown.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_breakdown.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: position: bottom version: '2' visualizationUrl: local:treemap +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_breakdown title: Product Breakdown diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_categories_pie_chart.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_categories_pie_chart.yaml index d1e7d73c5..9e02d59e8 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_categories_pie_chart.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_categories_pie_chart.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -46,5 +46,9 @@ content: position: bottom version: '2' visualizationUrl: local:donut +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_categories_pie_chart title: Product Categories Pie Chart diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml index 591f2eb3d..af598c523 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_revenue_comparison-over_previous_period.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -68,5 +68,9 @@ content: visible: false version: '2' visualizationUrl: local:column +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_revenue_comparison-over_previous_period title: Product Revenue Comparison (over previous period) diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_saleability.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_saleability.yaml index d759bf506..403c63d08 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_saleability.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/product_saleability.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: enabled: true version: '2' visualizationUrl: local:scatter +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: product_saleability title: Product Saleability diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml index f0cc61f00..72bbb6aea 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_and_quantity_by_product_and_category.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -92,5 +92,9 @@ content: direction: asc version: '2' visualizationUrl: local:table +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_and_quantity_by_product_and_category title: Revenue and Quantity by Product and Category diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_category_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_category_trend.yaml index 90b0316c4..ebcc49769 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_category_trend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_category_trend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -49,5 +49,9 @@ content: position: bottom version: '2' visualizationUrl: local:line +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_by_category_trend title: Revenue by Category Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_product.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_product.yaml index e51c4fa75..698b5c4db 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_product.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_by_product.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -32,5 +32,9 @@ content: properties: {} version: '2' visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_by_product title: Revenue by Product diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml index cfc9e47f4..09b49faf6 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_per_usd_vs_spend_by_campaign.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -49,5 +49,9 @@ content: min: '0' version: '2' visualizationUrl: local:scatter +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_per_usd_vs_spend_by_campaign title: Revenue per $ vs Spend by Campaign diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_trend.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_trend.yaml index a6c113ac1..e6b384762 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_trend.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/revenue_trend.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -61,5 +61,9 @@ content: rotation: auto version: '2' visualizationUrl: local:combo2 +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: revenue_trend title: Revenue Trend diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_customers.yaml index 67a40f29b..48956d131 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_customers.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: position: bottom version: '2' visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: top_10_customers title: Top 10 Customers diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_products.yaml index 2c9b84538..fd8061100 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/analytics_model/visualization_objects/top_10_products.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation content: buckets: - items: @@ -50,5 +50,9 @@ content: position: bottom version: '2' visualizationUrl: local:bar +createdAt: 2025-08-07 11:45 +createdBy: + id: admin + type: user id: top_10_products title: Top 10 Products diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels.yaml index 3f1b3a936..af0934f91 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Campaign channel id id: campaign_channel_id + isNullable: false labels: [] sourceColumn: campaign_channel_id sourceColumnDataType: STRING @@ -11,6 +12,7 @@ attributes: title: Campaign channel id - description: Category id: campaign_channels.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Category - description: Type id: type + isNullable: true labels: [] sourceColumn: type sourceColumnDataType: STRING @@ -36,6 +39,7 @@ description: Campaign channels facts: - description: Budget id: budget + isNullable: true sourceColumn: budget sourceColumnDataType: NUMERIC tags: @@ -43,6 +47,7 @@ facts: title: Budget - description: Spend id: spend + isNullable: true sourceColumn: spend sourceColumnDataType: NUMERIC tags: @@ -60,6 +65,7 @@ references: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels_per_category.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels_per_category.yaml index b25714c19..695f22706 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels_per_category.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaign_channels_per_category.yaml @@ -1,4 +1,4 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: - description: Budget Agg id: budget_agg @@ -25,6 +25,7 @@ references: sources: - column: campaign_channel_id dataType: STRING + isNullable: true target: id: campaign_channel_id type: attribute diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaigns.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaigns.yaml index 6146ae4fb..7135671f2 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaigns.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/campaigns.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Campaign id id: campaign_id + isNullable: false labels: [] sourceColumn: campaign_id sourceColumnDataType: INT @@ -11,6 +12,7 @@ attributes: title: Campaign id - description: Campaign name id: campaign_name + isNullable: true labels: [] sourceColumn: campaign_name sourceColumnDataType: STRING diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/customers.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/customers.yaml index 72f273e29..0068ffa44 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/customers.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/customers.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Customer id id: customer_id + isNullable: false labels: [] sourceColumn: customer_id sourceColumnDataType: INT @@ -11,6 +12,7 @@ attributes: title: Customer id - description: Customer name id: customer_name + isNullable: true labels: [] sourceColumn: customer_name sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Customer name - description: Region id: region + isNullable: true labels: [] sourceColumn: region sourceColumnDataType: STRING @@ -27,9 +30,11 @@ attributes: title: Region - description: State id: state + isNullable: true labels: - description: Location id: geo__state__location + isNullable: true sourceColumn: geo__state__location sourceColumnDataType: STRING tags: diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/order_lines.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/order_lines.yaml index 3b039c5b4..795d4e15f 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/order_lines.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/order_lines.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Order id id: order_id + isNullable: true labels: [] sourceColumn: order_id sourceColumnDataType: STRING @@ -11,6 +12,7 @@ attributes: title: Order id - description: Order line id id: order_line_id + isNullable: false labels: [] sourceColumn: order_line_id sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Order line id - description: Order status id: order_status + isNullable: true labels: [] sourceColumn: order_status sourceColumnDataType: STRING @@ -36,6 +39,7 @@ description: Order lines facts: - description: Price id: price + isNullable: true sourceColumn: price sourceColumnDataType: NUMERIC tags: @@ -43,6 +47,7 @@ facts: title: Price - description: Quantity id: quantity + isNullable: true sourceColumn: quantity sourceColumnDataType: NUMERIC tags: @@ -60,6 +65,7 @@ references: sources: - column: campaign_id dataType: INT + isNullable: true target: id: campaign_id type: attribute @@ -70,6 +76,7 @@ references: sources: - column: customer_id dataType: INT + isNullable: true target: id: customer_id type: attribute @@ -80,6 +87,7 @@ references: sources: - column: date dataType: DATE + isNullable: true target: id: date type: date @@ -90,6 +98,7 @@ references: sources: - column: product_id dataType: INT + isNullable: true target: id: product_id type: attribute diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/products.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/products.yaml index 906618d68..05ae1a1e1 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/products.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/datasets/products.yaml @@ -1,8 +1,9 @@ -# (C) 2025 GoodData Corporation +# (C) 2026 GoodData Corporation aggregatedFacts: [] attributes: - description: Product id id: product_id + isNullable: false labels: [] sourceColumn: product_id sourceColumnDataType: INT @@ -11,6 +12,7 @@ attributes: title: Product id - description: Product name id: product_name + isNullable: true labels: [] sourceColumn: product_name sourceColumnDataType: STRING @@ -19,6 +21,7 @@ attributes: title: Product name - description: Category id: products.category + isNullable: true labels: [] sourceColumn: category sourceColumnDataType: STRING diff --git a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/date_instances/date.yaml b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/date_instances/date.yaml index 7167131aa..23988163f 100644 --- a/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/date_instances/date.yaml +++ b/packages/gooddata-sdk/tests/catalog/load/workspace_content/gooddata_layouts/default/workspaces/demo_testing/ldm/date_instances/date.yaml @@ -1,4 +1,4 @@ -# (C) 2022 GoodData Corporation +# (C) 2026 GoodData Corporation description: '' granularities: - DAY diff --git a/packages/gooddata-sdk/tests/catalog/refresh/declarative_workspaces.json b/packages/gooddata-sdk/tests/catalog/refresh/declarative_workspaces.json index 225d037de..bce96638c 100644 --- a/packages/gooddata-sdk/tests/catalog/refresh/declarative_workspaces.json +++ b/packages/gooddata-sdk/tests/catalog/refresh/declarative_workspaces.json @@ -47,1163 +47,1219 @@ ], "workspaces": [ { - "automations": [], - "customApplicationSettings": [], - "filterViews": [], - "hierarchyPermissions": [ - { - "assignee": { - "id": "demo2", - "type": "user" - }, - "name": "MANAGE" - }, - { - "assignee": { - "id": "demoGroup", - "type": "userGroup" - }, - "name": "ANALYZE" - } - ], "id": "demo", + "name": "Demo", "model": { - "analytics": { - "analyticalDashboardExtensions": [], - "analyticalDashboards": [ + "ldm": { + "datasets": [ { - "content": { - "filterContextRef": { + "grain": [ + { + "id": "campaign_channel_id", + "type": "attribute" + } + ], + "id": "campaign_channels", + "references": [ + { "identifier": { - "id": "campaign_name_filter", - "type": "filterContext" - } - }, - "layout": { - "type": "IDashboardLayout", - "sections": [ + "id": "campaigns", + "type": "dataset" + }, + "multivalue": false, + "sources": [ { - "type": "IDashboardLayoutSection", - "header": { - "title": "Spend breakdown and Revenue", - "description": "The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful." + "column": "campaign_id", + "target": { + "id": "campaign_id", + "type": "attribute" }, - "items": [ - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Campaign Spend", - "description": "", - "ignoreDashboardFilters": [], - "insight": { - "identifier": { - "id": "campaign_spend", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Revenue per $ vs Spend by Campaign", - "description": "", - "ignoreDashboardFilters": [], - "insight": { - "identifier": { - "id": "revenue_per_usd_vs_spend_by_campaign", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - } - ] + "dataType": "INT", + "isNullable": true } ] + } + ], + "title": "Campaign channels", + "description": "Campaign channels", + "attributes": [ + { + "id": "campaign_channel_id", + "labels": [], + "sourceColumn": "campaign_channel_id", + "title": "Campaign channel id", + "sourceColumnDataType": "STRING", + "description": "Campaign channel id", + "tags": [ + "Campaign channels" + ], + "isNullable": false }, - "version": "2" - }, - "description": "", - "id": "campaign", - "permissions": [ { - "assigneeRule": { - "type": "allWorkspaceUsers" - }, - "name": "VIEW" + "id": "campaign_channels.category", + "labels": [], + "sourceColumn": "category", + "title": "Category", + "sourceColumnDataType": "STRING", + "description": "Category", + "tags": [ + "Campaign channels" + ], + "isNullable": true + }, + { + "id": "type", + "labels": [], + "sourceColumn": "type", + "title": "Type", + "sourceColumnDataType": "STRING", + "description": "Type", + "tags": [ + "Campaign channels" + ], + "isNullable": true } ], - "title": "Campaign" - }, - { - "content": { - "filterContextRef": { - "identifier": { - "id": "campaign_name_filter", - "type": "filterContext" - } - }, - "layout": { - "sections": [ - { - "items": [ - { - "size": { - "xl": { - "gridWidth": 12 - } - }, - "type": "IDashboardLayoutItem", - "widget": { - "description": "", - "drills": [], - "ignoreDashboardFilters": [], - "insight": { - "identifier": { - "id": "top_10_products", - "type": "visualizationObject" - } - }, - "properties": { - - }, - "title": "DHO simple", - "type": "insight" - } - } - ], - "type": "IDashboardLayoutSection" - } + "facts": [ + { + "id": "budget", + "sourceColumn": "budget", + "title": "Budget", + "sourceColumnDataType": "NUMERIC", + "description": "Budget", + "tags": [ + "Campaign channels" ], - "type": "IDashboardLayout" + "isNullable": true }, - "plugins": [ - { - "plugin": { - "identifier": { - "id": "dashboard_plugin_1", - "type": "dashboardPlugin" - } - }, - "version": "2" - } - ], - "version": "2" + { + "id": "spend", + "sourceColumn": "spend", + "title": "Spend", + "sourceColumnDataType": "NUMERIC", + "description": "Spend", + "tags": [ + "Campaign channels" + ], + "isNullable": true + } + ], + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "campaign_channels", + "type": "dataSource", + "path": [ + "demo", + "campaign_channels" + ] }, - "id": "dashboard_plugin", - "title": "Dashboard plugin" + "tags": [ + "Campaign channels" + ] }, { - "content": { - "filterContextRef": { + "grain": [], + "id": "campaign_channels_per_category", + "references": [ + { "identifier": { - "id": "region_filter", - "type": "filterContext" - } - }, - "layout": { - "type": "IDashboardLayout", - "sections": [ + "id": "campaign_channels", + "type": "dataset" + }, + "multivalue": false, + "sources": [ { - "type": "IDashboardLayoutSection", - "items": [ - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Top 10 Products", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "top_10_products", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Revenue Trend", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "revenue_trend", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Customers Trend", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "customers_trend", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Product Categories Pie Chart", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "product_categories_pie_chart", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Product Breakdown", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "product_breakdown", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 6 - } - }, - "widget": { - "type": "insight", - "title": "Product Saleability", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "product_saleability", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - }, - { - "type": "IDashboardLayoutItem", - "size": { - "xl": { - "gridWidth": 12 - } - }, - "widget": { - "type": "insight", - "title": "% Revenue per Product by Customer and Category", - "description": "", - "ignoreDashboardFilters": [], - "dateDataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } - }, - "insight": { - "identifier": { - "id": "percent_revenue_per_product_by_customer_and_category", - "type": "visualizationObject" - } - }, - "drills": [], - "properties": { - - } - } - } - ] - } - ] - }, - "version": "2" - }, - "description": "", - "id": "product_and_category", - "title": "Product & Category" - } - ], - "attributeHierarchies": [], - "dashboardPlugins": [ - { - "content": { - "url": "https://www.example.com", - "version": "2" - }, - "description": "Testing record dashboard_plugin_1", - "id": "dashboard_plugin_1", - "title": "dashboard_plugin_1" - }, - { - "content": { - "url": "https://www.example.com", - "version": "2" - }, - "description": "Testing record dashboard_plugin_2", - "id": "dashboard_plugin_2", - "title": "dashboard_plugin_2" - } - ], - "exportDefinitions": [], - "filterContexts": [ - { - "content": { - "filters": [ - { - "dateFilter": { - "from": "0", - "to": "0", - "granularity": "GDC.time.month", - "type": "relative" - } - }, - { - "attributeFilter": { - "displayForm": { - "identifier": { - "id": "campaign_name", - "type": "label" - } - }, - "negativeSelection": true, - "attributeElements": { - "uris": [] + "column": "campaign_channel_id", + "target": { + "id": "campaign_channel_id", + "type": "attribute" }, - "localIdentifier": "14b0807447ef4bc28f43e4fc5c337d1d", - "filterElementsBy": [] + "dataType": "STRING", + "isNullable": true } - } - ], - "version": "2" - }, - "description": "", - "id": "campaign_name_filter", - "title": "filterContext" - }, - { - "content": { - "filters": [ - { - "attributeFilter": { - "displayForm": { - "identifier": { - "id": "region", - "type": "label" - } - }, - "negativeSelection": true, - "attributeElements": { - "uris": [] - }, - "localIdentifier": "2d5ef8df82444f6ba27b45f0990ee6af", - "filterElementsBy": [] + ] + } + ], + "title": "Campaign channels per category", + "description": "Campaign channels per categories", + "attributes": [], + "facts": [], + "aggregatedFacts": [ + { + "id": "budget_agg", + "sourceColumn": "budget", + "sourceFactReference": { + "operation": "SUM", + "reference": { + "id": "budget", + "type": "fact" } - } - ], - "version": "2" - }, - "description": "", - "id": "region_filter", - "title": "filterContext" - } - ], - "metrics": [ - { - "content": { - "format": "#,##0", - "maql": "SELECT COUNT({attribute/customer_id},{attribute/order_line_id})" - }, - "id": "amount_of_active_customers", - "title": "# of Active Customers" - }, - { - "content": { - "format": "#,##0", - "maql": "SELECT COUNT({attribute/order_id})" - }, - "id": "amount_of_orders", - "title": "# of Orders" - }, - { - "content": { - "format": "#,##0", - "maql": "SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) \u003E 10000 " - }, - "id": "amount_of_top_customers", - "title": "# of Top Customers" - }, - { - "content": { - "format": "#,##0.00", - "maql": "SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN (\"Returned\", \"Canceled\"))" - }, - "description": "", - "id": "amount_of_valid_orders", - "title": "# of Valid Orders" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT SUM({fact/spend})" - }, - "id": "campaign_spend", - "title": "Campaign Spend" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT SUM({fact/price}*{fact/quantity})" - }, - "id": "order_amount", - "title": "Order Amount" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT {metric/revenue} / {metric/total_revenue}" - }, - "id": "percent_revenue", - "title": "% Revenue" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY {attribute/customer_id}) \u003E 0)\n /\n {metric/revenue}" - }, - "id": "percent_revenue_from_top_10_customers", - "title": "% Revenue from Top 10 Customers" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent} BY {attribute/customer_id}) \u003E 0)\n /\n {metric/revenue}" - }, - "id": "percent_revenue_from_top_10_percent_customers", - "title": "% Revenue from Top 10% Customers" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent} BY {attribute/product_id}) \u003E 0)\n /\n {metric/revenue}" - }, - "id": "percent_revenue_from_top_10_percent_products", - "title": "% Revenue from Top 10% Products" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY {attribute/product_id}) \u003E 0)\n /\n {metric/revenue}" - }, - "id": "percent_revenue_from_top_10_products", - "title": "% Revenue from Top 10 Products" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER)" - }, - "id": "percent_revenue_in_category", - "title": "% Revenue in Category" - }, - { - "content": { - "format": "#,##0.0%", - "maql": "SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id})" - }, - "id": "percent_revenue_per_product", - "title": "% Revenue per Product" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN (\"Returned\", \"Canceled\"))" - }, - "description": "", - "id": "revenue", - "title": "Revenue" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN (\"Clothing\")" - }, - "id": "revenue-clothing", - "title": "Revenue (Clothing)" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN ( \"Electronics\")" - }, - "id": "revenue-electronic", - "title": "Revenue (Electronic)" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN (\"Home\")" - }, - "id": "revenue-home", - "title": "Revenue (Home)" - }, - { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN (\"Outdoor\")" - }, - "id": "revenue-outdoor", - "title": "Revenue (Outdoor)" - }, - { - "content": { - "format": "$#,##0.0", - "maql": "SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id})" + }, + "sourceColumnDataType": "INT", + "description": "Budget Agg", + "tags": [ + "Campaign channels per category" + ] + } + ], + "precedence": 1, + "sql": { + "dataSourceId": "demo-test-ds", + "statement": "SELECT category, SUM(budget) FROM campaign_channels GROUP BY category" }, - "id": "revenue_per_customer", - "title": "Revenue per Customer" + "tags": [ + "Campaign channels per category" + ] }, { - "content": { - "format": "$#,##0.0", - "maql": "SELECT {metric/revenue} / {metric/campaign_spend}" + "grain": [ + { + "id": "campaign_id", + "type": "attribute" + } + ], + "id": "campaigns", + "references": [], + "title": "Campaigns", + "description": "Campaigns", + "attributes": [ + { + "id": "campaign_id", + "labels": [], + "sourceColumn": "campaign_id", + "title": "Campaign id", + "sourceColumnDataType": "INT", + "description": "Campaign id", + "tags": [ + "Campaigns" + ], + "isNullable": false + }, + { + "id": "campaign_name", + "labels": [], + "sourceColumn": "campaign_name", + "title": "Campaign name", + "sourceColumnDataType": "STRING", + "description": "Campaign name", + "tags": [ + "Campaigns" + ], + "isNullable": true + } + ], + "facts": [], + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "campaigns", + "type": "dataSource", + "path": [ + "demo", + "campaigns" + ] }, - "id": "revenue_per_dollar_spent", - "title": "Revenue per Dollar Spent" + "tags": [ + "Campaigns" + ] }, { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue})" + "grain": [ + { + "id": "customer_id", + "type": "attribute" + } + ], + "id": "customers", + "references": [], + "title": "Customers", + "description": "Customers", + "attributes": [ + { + "id": "customer_id", + "labels": [], + "sourceColumn": "customer_id", + "title": "Customer id", + "sourceColumnDataType": "INT", + "description": "Customer id", + "tags": [ + "Customers" + ], + "isNullable": false + }, + { + "id": "customer_name", + "labels": [], + "sourceColumn": "customer_name", + "title": "Customer name", + "sourceColumnDataType": "STRING", + "description": "Customer name", + "tags": [ + "Customers" + ], + "isNullable": true + }, + { + "id": "region", + "labels": [], + "sourceColumn": "region", + "title": "Region", + "sourceColumnDataType": "STRING", + "description": "Region", + "tags": [ + "Customers" + ], + "isNullable": true + }, + { + "id": "state", + "labels": [ + { + "id": "geo__state__location", + "sourceColumn": "geo__state__location", + "title": "Location", + "sourceColumnDataType": "STRING", + "description": "Location", + "tags": [ + "Customers" + ], + "valueType": "GEO", + "isNullable": true + } + ], + "sourceColumn": "state", + "title": "State", + "sourceColumnDataType": "STRING", + "description": "State", + "tags": [ + "Customers" + ], + "isNullable": true + } + ], + "facts": [], + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "customers", + "type": "dataSource", + "path": [ + "demo", + "customers" + ] }, - "id": "revenue_top_10", - "title": "Revenue / Top 10" + "tags": [ + "Customers" + ] }, { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue})" + "grain": [ + { + "id": "order_line_id", + "type": "attribute" + } + ], + "id": "order_lines", + "references": [ + { + "identifier": { + "id": "campaigns", + "type": "dataset" + }, + "multivalue": false, + "sources": [ + { + "column": "campaign_id", + "target": { + "id": "campaign_id", + "type": "attribute" + }, + "dataType": "INT", + "isNullable": true + } + ] + }, + { + "identifier": { + "id": "customers", + "type": "dataset" + }, + "multivalue": false, + "sources": [ + { + "column": "customer_id", + "target": { + "id": "customer_id", + "type": "attribute" + }, + "dataType": "INT", + "isNullable": true + } + ] + }, + { + "identifier": { + "id": "date", + "type": "dataset" + }, + "multivalue": false, + "sources": [ + { + "column": "date", + "target": { + "id": "date", + "type": "date" + }, + "dataType": "DATE", + "isNullable": true + } + ] + }, + { + "identifier": { + "id": "products", + "type": "dataset" + }, + "multivalue": false, + "sources": [ + { + "column": "product_id", + "target": { + "id": "product_id", + "type": "attribute" + }, + "dataType": "INT", + "isNullable": true + } + ] + } + ], + "title": "Order lines", + "description": "Order lines", + "attributes": [ + { + "id": "order_id", + "labels": [], + "sourceColumn": "order_id", + "title": "Order id", + "sourceColumnDataType": "STRING", + "description": "Order id", + "tags": [ + "Order lines" + ], + "isNullable": true + }, + { + "id": "order_line_id", + "labels": [], + "sourceColumn": "order_line_id", + "title": "Order line id", + "sourceColumnDataType": "STRING", + "description": "Order line id", + "tags": [ + "Order lines" + ], + "isNullable": false + }, + { + "id": "order_status", + "labels": [], + "sourceColumn": "order_status", + "title": "Order status", + "sourceColumnDataType": "STRING", + "description": "Order status", + "tags": [ + "Order lines" + ], + "isNullable": true + } + ], + "facts": [ + { + "id": "price", + "sourceColumn": "price", + "title": "Price", + "sourceColumnDataType": "NUMERIC", + "description": "Price", + "tags": [ + "Order lines" + ], + "isNullable": true + }, + { + "id": "quantity", + "sourceColumn": "quantity", + "title": "Quantity", + "sourceColumnDataType": "NUMERIC", + "description": "Quantity", + "tags": [ + "Order lines" + ], + "isNullable": true + } + ], + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "order_lines", + "type": "dataSource", + "path": [ + "demo", + "order_lines" + ] }, - "id": "revenue_top_10_percent", - "title": "Revenue / Top 10%" + "tags": [ + "Order lines" + ], + "workspaceDataFilterColumns": [ + { + "dataType": "STRING", + "name": "wdf__region" + }, + { + "dataType": "STRING", + "name": "wdf__state" + } + ], + "workspaceDataFilterReferences": [ + { + "filterColumn": "wdf__region", + "filterColumnDataType": "STRING", + "filterId": { + "id": "wdf__region", + "type": "workspaceDataFilter" + } + } + ] }, { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/revenue} BY ALL OTHER" + "grain": [ + { + "id": "product_id", + "type": "attribute" + } + ], + "id": "products", + "references": [], + "title": "Products", + "description": "Products", + "attributes": [ + { + "id": "product_id", + "labels": [], + "sourceColumn": "product_id", + "title": "Product id", + "sourceColumnDataType": "INT", + "description": "Product id", + "tags": [ + "Products" + ], + "isNullable": false + }, + { + "id": "product_name", + "labels": [], + "sourceColumn": "product_name", + "title": "Product name", + "sourceColumnDataType": "STRING", + "description": "Product name", + "tags": [ + "Products" + ], + "isNullable": true + }, + { + "id": "products.category", + "labels": [], + "sourceColumn": "category", + "title": "Category", + "sourceColumnDataType": "STRING", + "description": "Category", + "tags": [ + "Products" + ], + "isNullable": true + } + ], + "facts": [], + "aggregatedFacts": [], + "dataSourceTableId": { + "dataSourceId": "demo-test-ds", + "id": "products", + "type": "dataSource", + "path": [ + "demo", + "products" + ] }, - "id": "total_revenue", - "title": "Total Revenue" - }, + "tags": [ + "Products" + ] + } + ], + "dateInstances": [ { - "content": { - "format": "$#,##0", - "maql": "SELECT {metric/total_revenue} WITHOUT PARENT FILTER" + "granularities": [ + "DAY", + "WEEK", + "MONTH", + "QUARTER", + "YEAR" + ], + "granularitiesFormatting": { + "titleBase": "", + "titlePattern": "%titleBase - %granularityTitle" }, - "id": "total_revenue-no_filters", - "title": "Total Revenue (No Filters)" + "id": "date", + "title": "Date", + "description": "", + "tags": [ + "Date" + ] } - ], - "visualizationObjects": [ + ] + }, + "analytics": { + "analyticalDashboards": [ { "content": { - "buckets": [ - { - "items": [ - { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "campaign_spend", - "type": "metric" - } - } - } - }, - "localIdentifier": "d319bcb2d8c04442a684e3b3cd063381", - "title": "Campaign Spend" - } - } - ], - "localIdentifier": "measures" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "campaign_channels.category", - "type": "label" - } - }, - "localIdentifier": "291c085e7df8420db84117ca49f59c49" - } - } - ], - "localIdentifier": "view" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "campaign_name", - "type": "label" - } - }, - "localIdentifier": "d9dd143d647d4d148405a60ec2cf59bc" - } - } - ], - "localIdentifier": "segment" + "filterContextRef": { + "identifier": { + "id": "campaign_name_filter", + "type": "filterContext" } - ], - "filters": [ - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "type", - "type": "label" - } - }, - "notIn": { - "values": [] - } - } - }, - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "campaign_channels.category", - "type": "label" - } + }, + "layout": { + "type": "IDashboardLayout", + "sections": [ + { + "type": "IDashboardLayoutSection", + "header": { + "title": "Spend breakdown and Revenue", + "description": "The first insight shows a breakdown of spend by category and campaign. The second shows revenue per $ spend, for each campaign, to demonstrate, how campaigns are successful." }, - "notIn": { - "values": [] - } - } - }, - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "campaign_name", - "type": "label" + "items": [ + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 + } + }, + "widget": { + "type": "insight", + "title": "Campaign Spend", + "description": "", + "ignoreDashboardFilters": [], + "insight": { + "identifier": { + "id": "campaign_spend", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 + } + }, + "widget": { + "type": "insight", + "title": "Revenue per $ vs Spend by Campaign", + "description": "", + "ignoreDashboardFilters": [], + "insight": { + "identifier": { + "id": "revenue_per_usd_vs_spend_by_campaign", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } } - }, - "notIn": { - "values": [] - } - } - } - ], - "properties": { - "controls": { - "legend": { - "position": "bottom" + ] } - } + ] }, - "version": "2", - "visualizationUrl": "local:treemap" + "version": "2" }, - "id": "campaign_spend", - "title": "Campaign Spend" + "id": "campaign", + "title": "Campaign", + "description": "", + "permissions": [ + { + "name": "VIEW", + "assigneeRule": { + "type": "allWorkspaceUsers" + } + } + ] }, { "content": { - "buckets": [ - { - "items": [ - { - "measure": { - "alias": "Active Customers", - "definition": { - "measureDefinition": { - "computeRatio": false, - "filters": [], - "item": { - "identifier": { - "id": "amount_of_active_customers", - "type": "metric" - } - } + "filterContextRef": { + "identifier": { + "id": "campaign_name_filter", + "type": "filterContext" + } + }, + "layout": { + "sections": [ + { + "items": [ + { + "size": { + "xl": { + "gridWidth": 12 } }, - "localIdentifier": "2ba0b87b59ca41a4b1530e81a5c1d081", - "title": "# of Active Customers" - } - } - ], - "localIdentifier": "measures" - }, - { - "items": [ - { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "revenue_per_customer", - "type": "metric" - } + "type": "IDashboardLayoutItem", + "widget": { + "description": "", + "drills": [], + "ignoreDashboardFilters": [], + "insight": { + "identifier": { + "id": "top_10_products", + "type": "visualizationObject" } - } - }, - "localIdentifier": "ec0606894b9f4897b7beaf1550608928", - "title": "Revenue per Customer" - } - } - ], - "localIdentifier": "secondary_measures" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "date.month", - "type": "label" - } - }, - "localIdentifier": "0de7d7f08af7480aa636857a26be72b6" - } - } - ], - "localIdentifier": "view" - } - ], - "filters": [ - { - "relativeDateFilter": { - "dataSet": { - "identifier": { - "id": "date", - "type": "dataset" + }, + "properties": {}, + "title": "DHO simple", + "type": "insight" + } } - }, - "from": -11, - "granularity": "GDC.time.month", - "to": 0 + ], + "type": "IDashboardLayoutSection" } - } - ], - "properties": { - "controls": { - "colorMapping": [ - { - "color": { - "type": "guid", - "value": "20" - }, - "id": "2ba0b87b59ca41a4b1530e81a5c1d081" - }, - { - "color": { - "type": "guid", - "value": "4" - }, - "id": "ec0606894b9f4897b7beaf1550608928" + ], + "type": "IDashboardLayout" + }, + "plugins": [ + { + "plugin": { + "identifier": { + "id": "dashboard_plugin_1", + "type": "dashboardPlugin" } - ], - "dualAxis": true, - "legend": { - "position": "bottom" - }, - "primaryChartType": "column", - "secondaryChartType": "line", - "secondary_yaxis": { - "measures": [ - "ec0606894b9f4897b7beaf1550608928" - ] }, - "xaxis": { - "name": { - "visible": false - }, - "rotation": "auto" - } + "version": "2" } - }, - "version": "2", - "visualizationUrl": "local:combo2" + ], + "version": "2" }, - "id": "customers_trend", - "title": "Customers Trend" + "id": "dashboard_plugin", + "title": "Dashboard plugin" }, { "content": { - "buckets": [ - { - "items": [ - { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "percent_revenue_per_product", - "type": "metric" - } + "filterContextRef": { + "identifier": { + "id": "region_filter", + "type": "filterContext" + } + }, + "layout": { + "type": "IDashboardLayout", + "sections": [ + { + "type": "IDashboardLayoutSection", + "items": [ + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 + } + }, + "widget": { + "type": "insight", + "title": "Top 10 Products", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "top_10_products", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 + } + }, + "widget": { + "type": "insight", + "title": "Revenue Trend", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "revenue_trend", + "type": "visualizationObject" } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 } }, - "localIdentifier": "08d8346c1ce7438994b251991c0fbf65", - "title": "% Revenue per Product" - } - }, - { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "revenue", - "type": "metric" - } + "widget": { + "type": "insight", + "title": "Customers Trend", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "customers_trend", + "type": "visualizationObject" } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 } }, - "localIdentifier": "b2350c06688b4da9b3833ebcce65527f", - "title": "Revenue" - } - } - ], - "localIdentifier": "measures" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "customer_name", - "type": "label" + "widget": { + "type": "insight", + "title": "Product Categories Pie Chart", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "product_categories_pie_chart", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 } }, - "localIdentifier": "7a4045fd00ac44579f52406df679435f" - } - }, - { - "attribute": { - "displayForm": { - "identifier": { - "id": "products.category", - "type": "label" + "widget": { + "type": "insight", + "title": "Product Breakdown", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "product_breakdown", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 6 } }, - "localIdentifier": "6a003ffd14994237ba64c4a02c488429" - } - }, - { - "attribute": { - "displayForm": { - "identifier": { - "id": "product_name", - "type": "label" + "widget": { + "type": "insight", + "title": "Product Saleability", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "product_saleability", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } + }, + { + "type": "IDashboardLayoutItem", + "size": { + "xl": { + "gridWidth": 12 } }, - "localIdentifier": "75ea396d0c8b48098e31dccf8b5801d3" - } - } - ], - "localIdentifier": "attribute" - } - ], - "filters": [ - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "customer_name", - "type": "label" + "widget": { + "type": "insight", + "title": "% Revenue per Product by Customer and Category", + "description": "", + "ignoreDashboardFilters": [], + "dateDataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "insight": { + "identifier": { + "id": "percent_revenue_per_product_by_customer_and_category", + "type": "visualizationObject" + } + }, + "drills": [], + "properties": {} + } } - }, - "notIn": { - "values": [] - } + ] } - }, - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "products.category", - "type": "label" - } - }, - "notIn": { - "values": [] - } + ] + }, + "version": "2" + }, + "id": "product_and_category", + "title": "Product & Category", + "description": "" + } + ], + "analyticalDashboardExtensions": [], + "attributeHierarchies": [], + "dashboardPlugins": [ + { + "content": { + "url": "https://www.example.com", + "version": "2" + }, + "id": "dashboard_plugin_1", + "title": "dashboard_plugin_1", + "description": "Testing record dashboard_plugin_1" + }, + { + "content": { + "url": "https://www.example.com", + "version": "2" + }, + "id": "dashboard_plugin_2", + "title": "dashboard_plugin_2", + "description": "Testing record dashboard_plugin_2" + } + ], + "filterContexts": [ + { + "content": { + "filters": [ + { + "dateFilter": { + "from": "0", + "to": "0", + "granularity": "GDC.time.month", + "type": "relative" } }, { - "negativeAttributeFilter": { + "attributeFilter": { "displayForm": { "identifier": { - "id": "product_name", + "id": "campaign_name", "type": "label" } }, - "notIn": { - "values": [] - } - } - } - ], - "properties": { - - }, - "sorts": [ - { - "attributeSortItem": { - "attributeIdentifier": "7a4045fd00ac44579f52406df679435f", - "direction": "asc" + "negativeSelection": true, + "attributeElements": { + "uris": [] + }, + "localIdentifier": "14b0807447ef4bc28f43e4fc5c337d1d", + "filterElementsBy": [] } } ], - "version": "2", - "visualizationUrl": "local:table" + "version": "2" }, - "id": "percent_revenue_per_product_by_customer_and_category", - "title": "% Revenue per Product by Customer and Category" + "id": "campaign_name_filter", + "title": "filterContext", + "description": "" }, { "content": { - "buckets": [ - { - "items": [ - { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "amount_of_active_customers", - "type": "metric" - } - } - } - }, - "localIdentifier": "1a14cdc1293c46e89a2e25d3e741d235", - "title": "# of Active Customers" - } - } - ], - "localIdentifier": "measures" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "date.month", - "type": "label" - } - }, - "localIdentifier": "c1feca1864244ec2ace7a9b9d7fda231" - } - } - ], - "localIdentifier": "view" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "region", - "type": "label" - } - }, - "localIdentifier": "530cddbd7ca04d039e73462d81ed44d5" - } - } - ], - "localIdentifier": "stack" - } - ], "filters": [ { - "negativeAttributeFilter": { + "attributeFilter": { "displayForm": { "identifier": { "id": "region", "type": "label" } }, - "notIn": { - "values": [] - } - } - }, - { - "relativeDateFilter": { - "dataSet": { - "identifier": { - "id": "date", - "type": "dataset" - } + "negativeSelection": true, + "attributeElements": { + "uris": [] }, - "from": -11, - "granularity": "GDC.time.month", - "to": 0 + "localIdentifier": "2d5ef8df82444f6ba27b45f0990ee6af", + "filterElementsBy": [] } } ], - "properties": { - "controls": { - "legend": { - "position": "bottom" - }, - "stackMeasuresToPercent": true - } - }, - "version": "2", - "visualizationUrl": "local:area" + "version": "2" + }, + "id": "region_filter", + "title": "filterContext", + "description": "" + } + ], + "metrics": [ + { + "content": { + "format": "#,##0", + "maql": "SELECT COUNT({attribute/customer_id},{attribute/order_line_id})" + }, + "id": "amount_of_active_customers", + "title": "# of Active Customers" + }, + { + "content": { + "format": "#,##0", + "maql": "SELECT COUNT({attribute/order_id})" + }, + "id": "amount_of_orders", + "title": "# of Orders" + }, + { + "content": { + "format": "#,##0", + "maql": "SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 " + }, + "id": "amount_of_top_customers", + "title": "# of Top Customers" + }, + { + "content": { + "format": "#,##0.00", + "maql": "SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN (\"Returned\", \"Canceled\"))" + }, + "id": "amount_of_valid_orders", + "title": "# of Valid Orders", + "description": "" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT SUM({fact/spend})" + }, + "id": "campaign_spend", + "title": "Campaign Spend" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT SUM({fact/price}*{fact/quantity})" + }, + "id": "order_amount", + "title": "Order Amount" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT {metric/revenue} / {metric/total_revenue}" + }, + "id": "percent_revenue", + "title": "% Revenue" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + }, + "id": "percent_revenue_from_top_10_customers", + "title": "% Revenue from Top 10 Customers" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent} BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" + }, + "id": "percent_revenue_from_top_10_percent_customers", + "title": "% Revenue from Top 10% Customers" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent} BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + }, + "id": "percent_revenue_from_top_10_percent_products", + "title": "% Revenue from Top 10% Products" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10} BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" + }, + "id": "percent_revenue_from_top_10_products", + "title": "% Revenue from Top 10 Products" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER)" + }, + "id": "percent_revenue_in_category", + "title": "% Revenue in Category" + }, + { + "content": { + "format": "#,##0.0%", + "maql": "SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id})" + }, + "id": "percent_revenue_per_product", + "title": "% Revenue per Product" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN (\"Returned\", \"Canceled\"))" + }, + "id": "revenue", + "title": "Revenue", + "description": "" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN (\"Clothing\")" + }, + "id": "revenue-clothing", + "title": "Revenue (Clothing)" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN ( \"Electronics\")" + }, + "id": "revenue-electronic", + "title": "Revenue (Electronic)" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN (\"Home\")" }, - "id": "percentage_of_customers_by_region", - "title": "Percentage of Customers by Region" + "id": "revenue-home", + "title": "Revenue (Home)" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} WHERE {label/products.category} IN (\"Outdoor\")" + }, + "id": "revenue-outdoor", + "title": "Revenue (Outdoor)" + }, + { + "content": { + "format": "$#,##0.0", + "maql": "SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id})" + }, + "id": "revenue_per_customer", + "title": "Revenue per Customer" + }, + { + "content": { + "format": "$#,##0.0", + "maql": "SELECT {metric/revenue} / {metric/campaign_spend}" + }, + "id": "revenue_per_dollar_spent", + "title": "Revenue per Dollar Spent" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue})" + }, + "id": "revenue_top_10", + "title": "Revenue / Top 10" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue})" + }, + "id": "revenue_top_10_percent", + "title": "Revenue / Top 10%" + }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/revenue} BY ALL OTHER" + }, + "id": "total_revenue", + "title": "Total Revenue" }, + { + "content": { + "format": "$#,##0", + "maql": "SELECT {metric/total_revenue} WITHOUT PARENT FILTER" + }, + "id": "total_revenue-no_filters", + "title": "Total Revenue (No Filters)" + } + ], + "visualizationObjects": [ { "content": { "buckets": [ @@ -1216,14 +1272,14 @@ "filters": [], "item": { "identifier": { - "id": "revenue", + "id": "campaign_spend", "type": "metric" } } } }, - "localIdentifier": "590d332ef686468b8878ae41b23341c6", - "title": "Revenue" + "localIdentifier": "d319bcb2d8c04442a684e3b3cd063381", + "title": "Campaign Spend" } } ], @@ -1235,11 +1291,11 @@ "attribute": { "displayForm": { "identifier": { - "id": "products.category", + "id": "campaign_channels.category", "type": "label" } }, - "localIdentifier": "b166c71091864312a14c7ae8ff886ffe" + "localIdentifier": "291c085e7df8420db84117ca49f59c49" } } ], @@ -1251,11 +1307,11 @@ "attribute": { "displayForm": { "identifier": { - "id": "product_name", + "id": "campaign_name", "type": "label" } }, - "localIdentifier": "e920a50e0bbb49788df0aac53634c1cd" + "localIdentifier": "d9dd143d647d4d148405a60ec2cf59bc" } } ], @@ -1267,7 +1323,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "products.category", + "id": "type", "type": "label" } }, @@ -1280,7 +1336,20 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "product_name", + "id": "campaign_channels.category", + "type": "label" + } + }, + "notIn": { + "values": [] + } + } + }, + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "campaign_name", "type": "label" } }, @@ -1300,8 +1369,8 @@ "version": "2", "visualizationUrl": "local:treemap" }, - "id": "product_breakdown", - "title": "Product Breakdown" + "id": "campaign_spend", + "title": "Campaign Spend" }, { "content": { @@ -1310,37 +1379,59 @@ "items": [ { "measure": { + "alias": "Active Customers", "definition": { "measureDefinition": { - "computeRatio": true, + "computeRatio": false, "filters": [], "item": { "identifier": { - "id": "revenue", + "id": "amount_of_active_customers", "type": "metric" } } } }, - "localIdentifier": "162b857af49d45769bc12604a5c192b9", - "title": "% Revenue", - "format": "#,##0.00%" + "localIdentifier": "2ba0b87b59ca41a4b1530e81a5c1d081", + "title": "# of Active Customers" } } ], "localIdentifier": "measures" }, + { + "items": [ + { + "measure": { + "definition": { + "measureDefinition": { + "filters": [], + "item": { + "identifier": { + "id": "revenue_per_customer", + "type": "metric" + } + } + } + }, + "localIdentifier": "ec0606894b9f4897b7beaf1550608928", + "title": "Revenue per Customer" + } + } + ], + "localIdentifier": "secondary_measures" + }, { "items": [ { "attribute": { "displayForm": { "identifier": { - "id": "products.category", + "id": "date.month", "type": "label" } }, - "localIdentifier": "fe513cef1c6244a5ac21c5f49c56b108" + "localIdentifier": "0de7d7f08af7480aa636857a26be72b6" } } ], @@ -1349,47 +1440,61 @@ ], "filters": [ { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "product_name", - "type": "label" - } - }, - "notIn": { - "values": [] - } - } - }, - { - "negativeAttributeFilter": { - "displayForm": { + "relativeDateFilter": { + "dataSet": { "identifier": { - "id": "products.category", - "type": "label" + "id": "date", + "type": "dataset" } }, - "notIn": { - "values": [] - } + "from": -12, + "granularity": "GDC.time.month", + "to": -1 } } ], "properties": { "controls": { - "dataLabels": { - "visible": "auto" - }, + "colorMapping": [ + { + "color": { + "type": "guid", + "value": "20" + }, + "id": "2ba0b87b59ca41a4b1530e81a5c1d081" + }, + { + "color": { + "type": "guid", + "value": "4" + }, + "id": "ec0606894b9f4897b7beaf1550608928" + } + ], + "dualAxis": true, "legend": { "position": "bottom" + }, + "primaryChartType": "column", + "secondaryChartType": "line", + "secondary_yaxis": { + "measures": [ + "ec0606894b9f4897b7beaf1550608928" + ] + }, + "xaxis": { + "name": { + "visible": false + }, + "rotation": "auto" } } }, "version": "2", - "visualizationUrl": "local:donut" + "visualizationUrl": "local:combo2" }, - "id": "product_categories_pie_chart", - "title": "Product Categories Pie Chart" + "id": "customers_trend", + "title": "Customers Trend" }, { "content": { @@ -1398,24 +1503,23 @@ "items": [ { "measure": { - "alias": "Previous Period", "definition": { - "popMeasureDefinition": { - "measureIdentifier": "c82e025fa2db4afea9a600a424591dbe", - "popAttribute": { + "measureDefinition": { + "filters": [], + "item": { "identifier": { - "id": "date.year", - "type": "attribute" + "id": "percent_revenue_per_product", + "type": "metric" } } } }, - "localIdentifier": "c82e025fa2db4afea9a600a424591dbe_pop" + "localIdentifier": "08d8346c1ce7438994b251991c0fbf65", + "title": "% Revenue per Product" } }, { "measure": { - "alias": "This Period", "definition": { "measureDefinition": { "filters": [], @@ -1427,7 +1531,7 @@ } } }, - "localIdentifier": "c82e025fa2db4afea9a600a424591dbe", + "localIdentifier": "b2350c06688b4da9b3833ebcce65527f", "title": "Revenue" } } @@ -1436,6 +1540,17 @@ }, { "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "customer_name", + "type": "label" + } + }, + "localIdentifier": "7a4045fd00ac44579f52406df679435f" + } + }, { "attribute": { "displayForm": { @@ -1444,11 +1559,22 @@ "type": "label" } }, - "localIdentifier": "c804ef5ba7944a5a9f360c86a9e95e9a" + "localIdentifier": "6a003ffd14994237ba64c4a02c488429" + } + }, + { + "attribute": { + "displayForm": { + "identifier": { + "id": "product_name", + "type": "label" + } + }, + "localIdentifier": "75ea396d0c8b48098e31dccf8b5801d3" } } ], - "localIdentifier": "view" + "localIdentifier": "attribute" } ], "filters": [ @@ -1456,7 +1582,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "product_name", + "id": "customer_name", "type": "label" } }, @@ -1466,23 +1592,23 @@ } }, { - "relativeDateFilter": { - "dataSet": { + "negativeAttributeFilter": { + "displayForm": { "identifier": { - "id": "date", - "type": "dataset" + "id": "products.category", + "type": "label" } - }, - "from": -11, - "granularity": "GDC.time.month", - "to": 0 + }, + "notIn": { + "values": [] + } } }, { "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "products.category", + "id": "product_name", "type": "label" } }, @@ -1492,29 +1618,20 @@ } } ], - "properties": { - "controls": { - "legend": { - "position": "bottom" - }, - "stackMeasures": false, - "xaxis": { - "name": { - "visible": false - } - }, - "yaxis": { - "name": { - "visible": false - } + "properties": {}, + "sorts": [ + { + "attributeSortItem": { + "attributeIdentifier": "7a4045fd00ac44579f52406df679435f", + "direction": "asc" } } - }, + ], "version": "2", - "visualizationUrl": "local:column" + "visualizationUrl": "local:table" }, - "id": "product_revenue_comparison-over_previous_period", - "title": "Product Revenue Comparison (over previous period)" + "id": "percent_revenue_per_product_by_customer_and_category", + "title": "% Revenue per Product by Customer and Category" }, { "content": { @@ -1523,20 +1640,19 @@ "items": [ { "measure": { - "alias": "Number of Orders", "definition": { "measureDefinition": { "filters": [], "item": { "identifier": { - "id": "amount_of_orders", + "id": "amount_of_active_customers", "type": "metric" } } } }, - "localIdentifier": "aeb5d51a162d4b59aba3bd6ddebcc780", - "title": "# of Orders" + "localIdentifier": "1a14cdc1293c46e89a2e25d3e741d235", + "title": "# of Active Customers" } } ], @@ -1545,24 +1661,18 @@ { "items": [ { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "revenue", - "type": "metric" - } - } + "attribute": { + "displayForm": { + "identifier": { + "id": "date.month", + "type": "label" } }, - "localIdentifier": "94b3edd3a73c4a48a4d13bbe9442cc98", - "title": "Revenue" + "localIdentifier": "c1feca1864244ec2ace7a9b9d7fda231" } } ], - "localIdentifier": "secondary_measures" + "localIdentifier": "view" }, { "items": [ @@ -1570,15 +1680,15 @@ "attribute": { "displayForm": { "identifier": { - "id": "product_name", + "id": "region", "type": "label" } }, - "localIdentifier": "d2a991bdd123448eb2be73d79f1180c4" + "localIdentifier": "530cddbd7ca04d039e73462d81ed44d5" } } ], - "localIdentifier": "attribute" + "localIdentifier": "stack" } ], "filters": [ @@ -1586,7 +1696,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "product_name", + "id": "region", "type": "label" } }, @@ -1594,23 +1704,34 @@ "values": [] } } + }, + { + "relativeDateFilter": { + "dataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "from": -11, + "granularity": "GDC.time.month", + "to": 0 + } } ], "properties": { "controls": { - "dataLabels": { - "visible": "auto" + "legend": { + "position": "bottom" }, - "grid": { - "enabled": true - } + "stackMeasuresToPercent": true } }, "version": "2", - "visualizationUrl": "local:scatter" + "visualizationUrl": "local:area" }, - "id": "product_saleability", - "title": "Product Saleability" + "id": "percentage_of_customers_by_region", + "title": "Percentage of Customers by Region" }, { "content": { @@ -1619,63 +1740,6 @@ "items": [ { "measure": { - "alias": "Items Sold", - "definition": { - "measureDefinition": { - "aggregation": "sum", - "filters": [], - "item": { - "identifier": { - "id": "quantity", - "type": "fact" - } - } - } - }, - "format": "#,##0.00", - "localIdentifier": "29486504dd0e4a36a18b0b2f792d3a46", - "title": "Sum of Quantity" - } - }, - { - "measure": { - "definition": { - "measureDefinition": { - "aggregation": "avg", - "filters": [], - "item": { - "identifier": { - "id": "price", - "type": "fact" - } - } - } - }, - "format": "#,##0.00", - "localIdentifier": "aa6391acccf1452f8011201aef9af492", - "title": "Avg Price" - } - }, - { - "measure": { - "definition": { - "measureDefinition": { - "filters": [], - "item": { - "identifier": { - "id": "percent_revenue_in_category", - "type": "metric" - } - } - } - }, - "localIdentifier": "2cd39539d8da46c9883e63caa3ba7cc0", - "title": "% Revenue in Category" - } - }, - { - "measure": { - "alias": "Total Revenue", "definition": { "measureDefinition": { "filters": [], @@ -1687,7 +1751,7 @@ } } }, - "localIdentifier": "9a0f08331c094c7facf2a0b4f418de0a", + "localIdentifier": "590d332ef686468b8878ae41b23341c6", "title": "Revenue" } } @@ -1704,9 +1768,14 @@ "type": "label" } }, - "localIdentifier": "06bc6b3b9949466494e4f594c11f1bff" + "localIdentifier": "b166c71091864312a14c7ae8ff886ffe" } - }, + } + ], + "localIdentifier": "view" + }, + { + "items": [ { "attribute": { "displayForm": { @@ -1715,11 +1784,11 @@ "type": "label" } }, - "localIdentifier": "192668bfb6a74e9ab7b5d1ce7cb68ea3" + "localIdentifier": "e920a50e0bbb49788df0aac53634c1cd" } } ], - "localIdentifier": "attribute" + "localIdentifier": "segment" } ], "filters": [ @@ -1727,7 +1796,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "customer_name", + "id": "products.category", "type": "label" } }, @@ -1748,37 +1817,20 @@ "values": [] } } - }, - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "products.category", - "type": "label" - } - }, - "notIn": { - "values": [] - } - } } ], "properties": { - - }, - "sorts": [ - { - "attributeSortItem": { - "attributeIdentifier": "06bc6b3b9949466494e4f594c11f1bff", - "direction": "asc" + "controls": { + "legend": { + "position": "bottom" } } - ], + }, "version": "2", - "visualizationUrl": "local:table" + "visualizationUrl": "local:treemap" }, - "id": "revenue_and_quantity_by_product_and_category", - "title": "Revenue and Quantity by Product and Category" + "id": "product_breakdown", + "title": "Product Breakdown" }, { "content": { @@ -1789,6 +1841,7 @@ "measure": { "definition": { "measureDefinition": { + "computeRatio": true, "filters": [], "item": { "identifier": { @@ -1798,29 +1851,14 @@ } } }, - "localIdentifier": "7df6c34387744d69b23ec92e1a5cf543", - "title": "Revenue" + "localIdentifier": "162b857af49d45769bc12604a5c192b9", + "title": "% Revenue", + "format": "#,##0.00%" } } ], "localIdentifier": "measures" }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "date.month", - "type": "label" - } - }, - "localIdentifier": "4bb4fc1986c546de9ad976e6ec23fed4" - } - } - ], - "localIdentifier": "trend" - }, { "items": [ { @@ -1831,11 +1869,11 @@ "type": "label" } }, - "localIdentifier": "34bddcb1cd024902a82396216b0fa9d8" + "localIdentifier": "fe513cef1c6244a5ac21c5f49c56b108" } } ], - "localIdentifier": "segment" + "localIdentifier": "view" } ], "filters": [ @@ -1843,7 +1881,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "products.category", + "id": "product_name", "type": "label" } }, @@ -1853,29 +1891,34 @@ } }, { - "relativeDateFilter": { - "dataSet": { + "negativeAttributeFilter": { + "displayForm": { "identifier": { - "id": "date", - "type": "dataset" + "id": "products.category", + "type": "label" } }, - "granularity": "GDC.time.year" + "notIn": { + "values": [] + } } } ], "properties": { "controls": { + "dataLabels": { + "visible": "auto" + }, "legend": { "position": "bottom" } } }, "version": "2", - "visualizationUrl": "local:line" + "visualizationUrl": "local:donut" }, - "id": "revenue_by_category_trend", - "title": "Revenue by Category Trend" + "id": "product_categories_pie_chart", + "title": "Product Categories Pie Chart" }, { "content": { @@ -1884,6 +1927,24 @@ "items": [ { "measure": { + "alias": "Previous Period", + "definition": { + "popMeasureDefinition": { + "measureIdentifier": "c82e025fa2db4afea9a600a424591dbe", + "popAttribute": { + "identifier": { + "id": "date.year", + "type": "attribute" + } + } + } + }, + "localIdentifier": "c82e025fa2db4afea9a600a424591dbe_pop" + } + }, + { + "measure": { + "alias": "This Period", "definition": { "measureDefinition": { "filters": [], @@ -1895,7 +1956,7 @@ } } }, - "localIdentifier": "4ae3401bdbba4938afe983df4ba04e1c", + "localIdentifier": "c82e025fa2db4afea9a600a424591dbe", "title": "Revenue" } } @@ -1908,11 +1969,11 @@ "attribute": { "displayForm": { "identifier": { - "id": "product_name", + "id": "products.category", "type": "label" } }, - "localIdentifier": "1c8ba72dbfc84ddd913bf81dc355c427" + "localIdentifier": "c804ef5ba7944a5a9f360c86a9e95e9a" } } ], @@ -1932,16 +1993,57 @@ "values": [] } } + }, + { + "relativeDateFilter": { + "dataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "from": -11, + "granularity": "GDC.time.month", + "to": 0 + } + }, + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "products.category", + "type": "label" + } + }, + "notIn": { + "values": [] + } + } } ], "properties": { - + "controls": { + "legend": { + "position": "bottom" + }, + "stackMeasures": false, + "xaxis": { + "name": { + "visible": false + } + }, + "yaxis": { + "name": { + "visible": false + } + } + } }, "version": "2", - "visualizationUrl": "local:bar" + "visualizationUrl": "local:column" }, - "id": "revenue_by_product", - "title": "Revenue by Product" + "id": "product_revenue_comparison-over_previous_period", + "title": "Product Revenue Comparison (over previous period)" }, { "content": { @@ -1950,19 +2052,20 @@ "items": [ { "measure": { + "alias": "Number of Orders", "definition": { "measureDefinition": { "filters": [], "item": { "identifier": { - "id": "campaign_spend", + "id": "amount_of_orders", "type": "metric" } } } }, - "localIdentifier": "13a50d811e474ac6808d8da7f4673b35", - "title": "Campaign Spend" + "localIdentifier": "aeb5d51a162d4b59aba3bd6ddebcc780", + "title": "# of Orders" } } ], @@ -1977,14 +2080,14 @@ "filters": [], "item": { "identifier": { - "id": "revenue_per_dollar_spent", + "id": "revenue", "type": "metric" } } } }, - "localIdentifier": "a0f15e82e6334280a44dbedc7d086e7c", - "title": "Revenue per Dollar Spent" + "localIdentifier": "94b3edd3a73c4a48a4d13bbe9442cc98", + "title": "Revenue" } } ], @@ -1996,11 +2099,11 @@ "attribute": { "displayForm": { "identifier": { - "id": "campaign_name", + "id": "product_name", "type": "label" } }, - "localIdentifier": "1d9fa968bafb423eb29c938dfb1207ff" + "localIdentifier": "d2a991bdd123448eb2be73d79f1180c4" } } ], @@ -2012,7 +2115,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "campaign_name", + "id": "product_name", "type": "label" } }, @@ -2024,19 +2127,19 @@ ], "properties": { "controls": { - "xaxis": { - "min": "0" + "dataLabels": { + "visible": "auto" }, - "yaxis": { - "min": "0" + "grid": { + "enabled": true } } }, "version": "2", "visualizationUrl": "local:scatter" }, - "id": "revenue_per_usd_vs_spend_by_campaign", - "title": "Revenue per $ vs Spend by Campaign" + "id": "product_saleability", + "title": "Product Saleability" }, { "content": { @@ -2045,48 +2148,80 @@ "items": [ { "measure": { + "alias": "Items Sold", "definition": { "measureDefinition": { - "computeRatio": false, + "aggregation": "sum", "filters": [], "item": { "identifier": { - "id": "revenue", + "id": "quantity", + "type": "fact" + } + } + } + }, + "format": "#,##0.00", + "localIdentifier": "29486504dd0e4a36a18b0b2f792d3a46", + "title": "Sum of Quantity" + } + }, + { + "measure": { + "definition": { + "measureDefinition": { + "aggregation": "avg", + "filters": [], + "item": { + "identifier": { + "id": "price", + "type": "fact" + } + } + } + }, + "format": "#,##0.00", + "localIdentifier": "aa6391acccf1452f8011201aef9af492", + "title": "Avg Price" + } + }, + { + "measure": { + "definition": { + "measureDefinition": { + "filters": [], + "item": { + "identifier": { + "id": "percent_revenue_in_category", "type": "metric" } } } }, - "localIdentifier": "60c854969a9c4c278ab596d99c222e92", - "title": "Revenue" + "localIdentifier": "2cd39539d8da46c9883e63caa3ba7cc0", + "title": "% Revenue in Category" } - } - ], - "localIdentifier": "measures" - }, - { - "items": [ + }, { "measure": { - "alias": "Number of Orders", + "alias": "Total Revenue", "definition": { "measureDefinition": { - "computeRatio": false, "filters": [], "item": { "identifier": { - "id": "amount_of_orders", + "id": "revenue", "type": "metric" } } } }, - "localIdentifier": "c2fa7ef48cc54af99f8c280eb451e051", - "title": "# of Orders" + "localIdentifier": "9a0f08331c094c7facf2a0b4f418de0a", + "title": "Revenue" } } ], - "localIdentifier": "secondary_measures" + "localIdentifier": "measures" }, { "items": [ @@ -2094,58 +2229,83 @@ "attribute": { "displayForm": { "identifier": { - "id": "date.month", + "id": "products.category", "type": "label" } }, - "localIdentifier": "413ac374b65648fa96826ca01d47bdda" + "localIdentifier": "06bc6b3b9949466494e4f594c11f1bff" + } + }, + { + "attribute": { + "displayForm": { + "identifier": { + "id": "product_name", + "type": "label" + } + }, + "localIdentifier": "192668bfb6a74e9ab7b5d1ce7cb68ea3" } } ], - "localIdentifier": "view" + "localIdentifier": "attribute" } ], "filters": [ { - "relativeDateFilter": { - "dataSet": { + "negativeAttributeFilter": { + "displayForm": { "identifier": { - "id": "date", - "type": "dataset" + "id": "customer_name", + "type": "label" } }, - "from": -3, - "granularity": "GDC.time.quarter", - "to": 0 + "notIn": { + "values": [] + } + } + }, + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "product_name", + "type": "label" + } + }, + "notIn": { + "values": [] + } + } + }, + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "products.category", + "type": "label" + } + }, + "notIn": { + "values": [] + } } } ], - "properties": { - "controls": { - "dualAxis": true, - "legend": { - "position": "bottom" - }, - "primaryChartType": "column", - "secondaryChartType": "line", - "secondary_yaxis": { - "measures": [ - "c2fa7ef48cc54af99f8c280eb451e051" - ] - }, - "xaxis": { - "name": { - "visible": false - }, - "rotation": "auto" + "properties": {}, + "sorts": [ + { + "attributeSortItem": { + "attributeIdentifier": "06bc6b3b9949466494e4f594c11f1bff", + "direction": "asc" } } - }, + ], "version": "2", - "visualizationUrl": "local:combo2" + "visualizationUrl": "local:table" }, - "id": "revenue_trend", - "title": "Revenue Trend" + "id": "revenue_and_quantity_by_product_and_category", + "title": "Revenue and Quantity by Product and Category" }, { "content": { @@ -2159,14 +2319,14 @@ "filters": [], "item": { "identifier": { - "id": "revenue_top_10", + "id": "revenue", "type": "metric" } } } }, - "localIdentifier": "3f127ccfe57a40399e23f9ae2a4ad810", - "title": "Revenue / Top 10" + "localIdentifier": "7df6c34387744d69b23ec92e1a5cf543", + "title": "Revenue" } } ], @@ -2178,15 +2338,15 @@ "attribute": { "displayForm": { "identifier": { - "id": "customer_name", + "id": "date.month", "type": "label" } }, - "localIdentifier": "f4e39e24f11e4827a191c30d65c89d2c" + "localIdentifier": "4bb4fc1986c546de9ad976e6ec23fed4" } } ], - "localIdentifier": "view" + "localIdentifier": "trend" }, { "items": [ @@ -2194,15 +2354,15 @@ "attribute": { "displayForm": { "identifier": { - "id": "state", + "id": "products.category", "type": "label" } }, - "localIdentifier": "bbccd430176d428caed54c99afc9589e" + "localIdentifier": "34bddcb1cd024902a82396216b0fa9d8" } } ], - "localIdentifier": "stack" + "localIdentifier": "segment" } ], "filters": [ @@ -2210,7 +2370,7 @@ "negativeAttributeFilter": { "displayForm": { "identifier": { - "id": "customer_name", + "id": "products.category", "type": "label" } }, @@ -2220,16 +2380,14 @@ } }, { - "negativeAttributeFilter": { - "displayForm": { + "relativeDateFilter": { + "dataSet": { "identifier": { - "id": "state", - "type": "label" + "id": "date", + "type": "dataset" } }, - "notIn": { - "values": [] - } + "granularity": "GDC.time.year" } } ], @@ -2241,10 +2399,10 @@ } }, "version": "2", - "visualizationUrl": "local:bar" + "visualizationUrl": "local:line" }, - "id": "top_10_customers", - "title": "Top 10 Customers" + "id": "revenue_by_category_trend", + "title": "Revenue by Category Trend" }, { "content": { @@ -2258,14 +2416,14 @@ "filters": [], "item": { "identifier": { - "id": "revenue_top_10", + "id": "revenue", "type": "metric" } } } }, - "localIdentifier": "77dc71bbac92412bac5f94284a5919df", - "title": "Revenue / Top 10" + "localIdentifier": "4ae3401bdbba4938afe983df4ba04e1c", + "title": "Revenue" } } ], @@ -2281,27 +2439,11 @@ "type": "label" } }, - "localIdentifier": "781952e728204dcf923142910cc22ae2" + "localIdentifier": "1c8ba72dbfc84ddd913bf81dc355c427" } } ], "localIdentifier": "view" - }, - { - "items": [ - { - "attribute": { - "displayForm": { - "identifier": { - "id": "products.category", - "type": "label" - } - }, - "localIdentifier": "fe513cef1c6244a5ac21c5f49c56b108" - } - } - ], - "localIdentifier": "stack" } ], "filters": [ @@ -2317,583 +2459,423 @@ "values": [] } } - }, - { - "negativeAttributeFilter": { - "displayForm": { - "identifier": { - "id": "products.category", - "type": "label" - } - }, - "notIn": { - "values": [] - } - } } ], - "properties": { - "controls": { - "legend": { - "position": "bottom" - } - } - }, + "properties": {}, "version": "2", "visualizationUrl": "local:bar" }, - "id": "top_10_products", - "title": "Top 10 Products" - } - ], - "memoryItems": [] - }, - "ldm": { - "datasets": [ - { - "aggregatedFacts": [], - "attributes": [ - { - "description": "Campaign channel id", - "id": "campaign_channel_id", - "labels": [], - "sourceColumn": "campaign_channel_id", - "sourceColumnDataType": "STRING", - "tags": [ - "Campaign channels" - ], - "title": "Campaign channel id" - }, - { - "description": "Category", - "id": "campaign_channels.category", - "labels": [], - "sourceColumn": "category", - "sourceColumnDataType": "STRING", - "tags": [ - "Campaign channels" - ], - "title": "Category" - }, - { - "description": "Type", - "id": "type", - "labels": [], - "sourceColumn": "type", - "sourceColumnDataType": "STRING", - "tags": [ - "Campaign channels" - ], - "title": "Type" - } - ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "campaign_channels", - "path": [ - "demo", - "campaign_channels" - ], - "type": "dataSource" - }, - "description": "Campaign channels", - "facts": [ - { - "description": "Budget", - "id": "budget", - "sourceColumn": "budget", - "sourceColumnDataType": "NUMERIC", - "tags": [ - "Campaign channels" - ], - "title": "Budget" - }, - { - "description": "Spend", - "id": "spend", - "sourceColumn": "spend", - "sourceColumnDataType": "NUMERIC", - "tags": [ - "Campaign channels" - ], - "title": "Spend" - } - ], - "grain": [ - { - "id": "campaign_channel_id", - "type": "attribute" - } - ], - "id": "campaign_channels", - "references": [ - { - "identifier": { - "id": "campaigns", - "type": "dataset" - }, - "multivalue": false, - "sources": [ - { - "column": "campaign_id", - "dataType": "INT", - "target": { - "id": "campaign_id", - "type": "attribute" - } - } - ] - } - ], - "tags": [ - "Campaign channels" - ], - "title": "Campaign channels" + "id": "revenue_by_product", + "title": "Revenue by Product" }, { - "aggregatedFacts": [ - { - "description": "Budget Agg", - "id": "budget_agg", - "sourceColumn": "budget", - "sourceColumnDataType": "INT", - "sourceFactReference": { - "operation": "SUM", - "reference": { - "id": "budget", - "type": "fact" - } + "content": { + "buckets": [ + { + "items": [ + { + "measure": { + "definition": { + "measureDefinition": { + "filters": [], + "item": { + "identifier": { + "id": "campaign_spend", + "type": "metric" + } + } + } + }, + "localIdentifier": "13a50d811e474ac6808d8da7f4673b35", + "title": "Campaign Spend" + } + } + ], + "localIdentifier": "measures" }, - "tags": [ - "Campaign channels per category" - ] - } - ], - "attributes": [], - "description": "Campaign channels per categories", - "facts": [], - "grain": [], - "id": "campaign_channels_per_category", - "precedence": 1, - "references": [ - { - "identifier": { - "id": "campaign_channels", - "type": "dataset" + { + "items": [ + { + "measure": { + "definition": { + "measureDefinition": { + "filters": [], + "item": { + "identifier": { + "id": "revenue_per_dollar_spent", + "type": "metric" + } + } + } + }, + "localIdentifier": "a0f15e82e6334280a44dbedc7d086e7c", + "title": "Revenue per Dollar Spent" + } + } + ], + "localIdentifier": "secondary_measures" }, - "multivalue": false, - "sources": [ - { - "column": "campaign_channel_id", - "dataType": "STRING", - "target": { - "id": "campaign_channel_id", - "type": "attribute" + { + "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "campaign_name", + "type": "label" + } + }, + "localIdentifier": "1d9fa968bafb423eb29c938dfb1207ff" + } + } + ], + "localIdentifier": "attribute" + } + ], + "filters": [ + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "campaign_name", + "type": "label" + } + }, + "notIn": { + "values": [] } } - ] - } - ], - "sql": { - "dataSourceId": "demo-test-ds", - "statement": "SELECT category, SUM(budget) FROM campaign_channels GROUP BY category" - }, - "tags": [ - "Campaign channels per category" - ], - "title": "Campaign channels per category" - }, - { - "aggregatedFacts": [], - "attributes": [ - { - "description": "Campaign id", - "id": "campaign_id", - "labels": [], - "sourceColumn": "campaign_id", - "sourceColumnDataType": "INT", - "tags": [ - "Campaigns" - ], - "title": "Campaign id" - }, - { - "description": "Campaign name", - "id": "campaign_name", - "labels": [], - "sourceColumn": "campaign_name", - "sourceColumnDataType": "STRING", - "tags": [ - "Campaigns" - ], - "title": "Campaign name" - } - ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "campaigns", - "path": [ - "demo", - "campaigns" + } ], - "type": "dataSource" + "properties": { + "controls": { + "xaxis": { + "min": "0" + }, + "yaxis": { + "min": "0" + } + } + }, + "version": "2", + "visualizationUrl": "local:scatter" }, - "description": "Campaigns", - "facts": [], - "grain": [ - { - "id": "campaign_id", - "type": "attribute" - } - ], - "id": "campaigns", - "references": [], - "tags": [ - "Campaigns" - ], - "title": "Campaigns" + "id": "revenue_per_usd_vs_spend_by_campaign", + "title": "Revenue per $ vs Spend by Campaign" }, { - "aggregatedFacts": [], - "attributes": [ - { - "description": "Customer id", - "id": "customer_id", - "labels": [], - "sourceColumn": "customer_id", - "sourceColumnDataType": "INT", - "tags": [ - "Customers" - ], - "title": "Customer id" - }, - { - "description": "Customer name", - "id": "customer_name", - "labels": [], - "sourceColumn": "customer_name", - "sourceColumnDataType": "STRING", - "tags": [ - "Customers" - ], - "title": "Customer name" - }, - { - "description": "Region", - "id": "region", - "labels": [], - "sourceColumn": "region", - "sourceColumnDataType": "STRING", - "tags": [ - "Customers" - ], - "title": "Region" - }, - { - "description": "State", - "id": "state", - "labels": [ - { - "description": "Location", - "id": "geo__state__location", - "sourceColumn": "geo__state__location", - "sourceColumnDataType": "STRING", - "tags": [ - "Customers" - ], - "title": "Location", - "valueType": "GEO" + "content": { + "buckets": [ + { + "items": [ + { + "measure": { + "definition": { + "measureDefinition": { + "computeRatio": false, + "filters": [], + "item": { + "identifier": { + "id": "revenue", + "type": "metric" + } + } + } + }, + "localIdentifier": "60c854969a9c4c278ab596d99c222e92", + "title": "Revenue" + } + } + ], + "localIdentifier": "measures" + }, + { + "items": [ + { + "measure": { + "alias": "Number of Orders", + "definition": { + "measureDefinition": { + "computeRatio": false, + "filters": [], + "item": { + "identifier": { + "id": "amount_of_orders", + "type": "metric" + } + } + } + }, + "localIdentifier": "c2fa7ef48cc54af99f8c280eb451e051", + "title": "# of Orders" + } + } + ], + "localIdentifier": "secondary_measures" + }, + { + "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "date.month", + "type": "label" + } + }, + "localIdentifier": "413ac374b65648fa96826ca01d47bdda" + } + } + ], + "localIdentifier": "view" + } + ], + "filters": [ + { + "relativeDateFilter": { + "dataSet": { + "identifier": { + "id": "date", + "type": "dataset" + } + }, + "from": -3, + "granularity": "GDC.time.quarter", + "to": 0 } - ], - "sourceColumn": "state", - "sourceColumnDataType": "STRING", - "tags": [ - "Customers" - ], - "title": "State" - } - ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "customers", - "path": [ - "demo", - "customers" + } ], - "type": "dataSource" + "properties": { + "controls": { + "dualAxis": true, + "legend": { + "position": "bottom" + }, + "primaryChartType": "column", + "secondaryChartType": "line", + "secondary_yaxis": { + "measures": [ + "c2fa7ef48cc54af99f8c280eb451e051" + ] + }, + "xaxis": { + "name": { + "visible": false + }, + "rotation": "auto" + } + } + }, + "version": "2", + "visualizationUrl": "local:combo2" }, - "description": "Customers", - "facts": [], - "grain": [ - { - "id": "customer_id", - "type": "attribute" - } - ], - "id": "customers", - "references": [], - "tags": [ - "Customers" - ], - "title": "Customers" + "id": "revenue_trend", + "title": "Revenue Trend" }, { - "aggregatedFacts": [], - "attributes": [ - { - "description": "Order id", - "id": "order_id", - "labels": [], - "sourceColumn": "order_id", - "sourceColumnDataType": "STRING", - "tags": [ - "Order lines" - ], - "title": "Order id" - }, - { - "description": "Order line id", - "id": "order_line_id", - "labels": [], - "sourceColumn": "order_line_id", - "sourceColumnDataType": "STRING", - "tags": [ - "Order lines" - ], - "title": "Order line id" - }, - { - "description": "Order status", - "id": "order_status", - "labels": [], - "sourceColumn": "order_status", - "sourceColumnDataType": "STRING", - "tags": [ - "Order lines" - ], - "title": "Order status" - } - ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "order_lines", - "path": [ - "demo", - "order_lines" + "content": { + "buckets": [ + { + "items": [ + { + "measure": { + "definition": { + "measureDefinition": { + "filters": [], + "item": { + "identifier": { + "id": "revenue_top_10", + "type": "metric" + } + } + } + }, + "localIdentifier": "3f127ccfe57a40399e23f9ae2a4ad810", + "title": "Revenue / Top 10" + } + } + ], + "localIdentifier": "measures" + }, + { + "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "customer_name", + "type": "label" + } + }, + "localIdentifier": "f4e39e24f11e4827a191c30d65c89d2c" + } + } + ], + "localIdentifier": "view" + }, + { + "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "state", + "type": "label" + } + }, + "localIdentifier": "bbccd430176d428caed54c99afc9589e" + } + } + ], + "localIdentifier": "stack" + } ], - "type": "dataSource" - }, - "description": "Order lines", - "facts": [ - { - "description": "Price", - "id": "price", - "sourceColumn": "price", - "sourceColumnDataType": "NUMERIC", - "tags": [ - "Order lines" - ], - "title": "Price" - }, - { - "description": "Quantity", - "id": "quantity", - "sourceColumn": "quantity", - "sourceColumnDataType": "NUMERIC", - "tags": [ - "Order lines" - ], - "title": "Quantity" - } - ], - "grain": [ - { - "id": "order_line_id", - "type": "attribute" - } - ], - "id": "order_lines", - "references": [ - { - "identifier": { - "id": "campaigns", - "type": "dataset" + "filters": [ + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "customer_name", + "type": "label" + } + }, + "notIn": { + "values": [] + } + } }, - "multivalue": false, - "sources": [ - { - "column": "campaign_id", - "dataType": "INT", - "target": { - "id": "campaign_id", - "type": "attribute" + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "state", + "type": "label" + } + }, + "notIn": { + "values": [] } } - ] + } + ], + "properties": { + "controls": { + "legend": { + "position": "bottom" + } + } }, - { - "identifier": { - "id": "customers", - "type": "dataset" + "version": "2", + "visualizationUrl": "local:bar" + }, + "id": "top_10_customers", + "title": "Top 10 Customers" + }, + { + "content": { + "buckets": [ + { + "items": [ + { + "measure": { + "definition": { + "measureDefinition": { + "filters": [], + "item": { + "identifier": { + "id": "revenue_top_10", + "type": "metric" + } + } + } + }, + "localIdentifier": "77dc71bbac92412bac5f94284a5919df", + "title": "Revenue / Top 10" + } + } + ], + "localIdentifier": "measures" }, - "multivalue": false, - "sources": [ - { - "column": "customer_id", - "dataType": "INT", - "target": { - "id": "customer_id", - "type": "attribute" + { + "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "product_name", + "type": "label" + } + }, + "localIdentifier": "781952e728204dcf923142910cc22ae2" + } + } + ], + "localIdentifier": "view" + }, + { + "items": [ + { + "attribute": { + "displayForm": { + "identifier": { + "id": "products.category", + "type": "label" + } + }, + "localIdentifier": "fe513cef1c6244a5ac21c5f49c56b108" + } + } + ], + "localIdentifier": "stack" + } + ], + "filters": [ + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "product_name", + "type": "label" + } + }, + "notIn": { + "values": [] } } - ] - }, - { - "identifier": { - "id": "date", - "type": "dataset" }, - "multivalue": false, - "sources": [ - { - "column": "date", - "dataType": "DATE", - "target": { - "id": "date", - "type": "date" + { + "negativeAttributeFilter": { + "displayForm": { + "identifier": { + "id": "products.category", + "type": "label" + } + }, + "notIn": { + "values": [] } } - ] - }, - { - "identifier": { - "id": "products", - "type": "dataset" - }, - "multivalue": false, - "sources": [ - { - "column": "product_id", - "dataType": "INT", - "target": { - "id": "product_id", - "type": "attribute" - } + } + ], + "properties": { + "controls": { + "legend": { + "position": "bottom" } - ] - } - ], - "tags": [ - "Order lines" - ], - "title": "Order lines", - "workspaceDataFilterColumns": [ - { - "dataType": "STRING", - "name": "wdf__region" - }, - { - "dataType": "STRING", - "name": "wdf__state" - } - ], - "workspaceDataFilterReferences": [ - { - "filterColumn": "wdf__region", - "filterColumnDataType": "STRING", - "filterId": { - "id": "wdf__region", - "type": "workspaceDataFilter" } - } - ] - }, - { - "aggregatedFacts": [], - "attributes": [ - { - "description": "Product id", - "id": "product_id", - "labels": [], - "sourceColumn": "product_id", - "sourceColumnDataType": "INT", - "tags": [ - "Products" - ], - "title": "Product id" - }, - { - "description": "Product name", - "id": "product_name", - "labels": [], - "sourceColumn": "product_name", - "sourceColumnDataType": "STRING", - "tags": [ - "Products" - ], - "title": "Product name" }, - { - "description": "Category", - "id": "products.category", - "labels": [], - "sourceColumn": "category", - "sourceColumnDataType": "STRING", - "tags": [ - "Products" - ], - "title": "Category" - } - ], - "dataSourceTableId": { - "dataSourceId": "demo-test-ds", - "id": "products", - "path": [ - "demo", - "products" - ], - "type": "dataSource" + "version": "2", + "visualizationUrl": "local:bar" }, - "description": "Products", - "facts": [], - "grain": [ - { - "id": "product_id", - "type": "attribute" - } - ], - "id": "products", - "references": [], - "tags": [ - "Products" - ], - "title": "Products" + "id": "top_10_products", + "title": "Top 10 Products" } ], - "dateInstances": [ - { - "description": "", - "granularities": [ - "DAY", - "WEEK", - "MONTH", - "QUARTER", - "YEAR" - ], - "granularitiesFormatting": { - "titleBase": "", - "titlePattern": "%titleBase - %granularityTitle" - }, - "id": "date", - "tags": [ - "Date" - ], - "title": "Date" - } - ] + "exportDefinitions": [], + "memoryItems": [], + "parameters": [] } }, - "name": "Demo", "permissions": [ { "assignee": { @@ -2910,99 +2892,120 @@ "name": "VIEW" } ], + "hierarchyPermissions": [ + { + "assignee": { + "id": "demo2", + "type": "user" + }, + "name": "MANAGE" + }, + { + "assignee": { + "id": "demoGroup", + "type": "userGroup" + }, + "name": "ANALYZE" + } + ], "settings": [], - "userDataFilters": [] + "userDataFilters": [], + "customApplicationSettings": [], + "automations": [], + "filterViews": [] }, { - "automations": [], - "customApplicationSettings": [], - "filterViews": [], - "hierarchyPermissions": [], "id": "demo_west", + "name": "Demo West", "model": { + "ldm": { + "datasets": [], + "dateInstances": [], + "datasetExtensions": [ + { + "id": "order_lines", + "workspaceDataFilterReferences": [ + { + "filterColumn": "wdf__state", + "filterColumnDataType": "STRING", + "filterId": { + "id": "wdf__state", + "type": "workspaceDataFilter" + } + } + ] + } + ] + }, "analytics": { + "analyticalDashboards": [], "analyticalDashboardExtensions": [ { "id": "campaign", "permissions": [ { + "name": "VIEW", "assigneeRule": { "type": "allWorkspaceUsers" - }, - "name": "VIEW" + } } ] } ], - "analyticalDashboards": [], "attributeHierarchies": [], "dashboardPlugins": [], - "exportDefinitions": [], "filterContexts": [], "metrics": [], "visualizationObjects": [], - "memoryItems": [] - }, - "ldm": { - "datasetExtensions": [ - { - "id": "order_lines", - "workspaceDataFilterReferences": [ - { - "filterColumn": "wdf__state", - "filterColumnDataType": "STRING", - "filterId": { - "id": "wdf__state", - "type": "workspaceDataFilter" - } - } - ] - } - ], - "datasets": [], - "dateInstances": [] + "exportDefinitions": [], + "memoryItems": [], + "parameters": [] } }, - "name": "Demo West", "parent": { "id": "demo", "type": "workspace" }, "permissions": [], + "hierarchyPermissions": [], "settings": [], - "userDataFilters": [] + "userDataFilters": [], + "customApplicationSettings": [], + "automations": [], + "filterViews": [] }, { - "automations": [], - "customApplicationSettings": [], - "filterViews": [], - "hierarchyPermissions": [], "id": "demo_west_california", + "name": "Demo West California", "model": { + "ldm": { + "datasets": [], + "dateInstances": [] + }, "analytics": { - "analyticalDashboardExtensions": [], "analyticalDashboards": [], + "analyticalDashboardExtensions": [], "attributeHierarchies": [], "dashboardPlugins": [], - "exportDefinitions": [], "filterContexts": [], "metrics": [], "visualizationObjects": [], - "memoryItems": [] - }, - "ldm": { - "datasets": [], - "dateInstances": [] + "exportDefinitions": [], + "memoryItems": [], + "parameters": [] } }, - "name": "Demo West California", "parent": { "id": "demo_west", "type": "workspace" }, "permissions": [], + "hierarchyPermissions": [], "settings": [], - "userDataFilters": [] + "userDataFilters": [], + "customApplicationSettings": [], + "automations": [], + "filterViews": [] } ] } diff --git a/packages/gooddata-sdk/tests/conftest.py b/packages/gooddata-sdk/tests/conftest.py index 60daaddff..76c03a3cc 100644 --- a/packages/gooddata-sdk/tests/conftest.py +++ b/packages/gooddata-sdk/tests/conftest.py @@ -6,6 +6,7 @@ import pytest import yaml +from tests_support.vcrpy_utils import configure_normalization logger = logging.getLogger(__name__) @@ -55,6 +56,10 @@ def test_config(request): if env_ds_password: config["ds_password"] = env_ds_password + # Initialize VCR cassette normalization so recordings from any environment + # produce identical cassette files (canonical localhost values). + configure_normalization(config) + return config diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml index a00eb36e4..69a17fa44 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/afm/execute body: execution: attributes: @@ -21,22 +18,22 @@ interactions: measures: - definition: measure: + aggregation: SUM + computeRatio: false + filters: [] item: identifier: id: price type: fact - aggregation: SUM - computeRatio: false - filters: [] localIdentifier: price - definition: measure: + computeRatio: false + filters: [] item: identifier: id: order_amount type: metric - computeRatio: false - filters: [] localIdentifier: order_amount resultSpec: dimensions: @@ -58,71 +55,40 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '907' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-CANCEL-TOKEN: - - 7a74a245-dfbc-4c85-b138-2f31849c1856 - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: executionResponse: dimensions: - headers: - attributeHeader: - localIdentifier: state - label: - id: state - type: label - labelName: State attribute: id: state type: attribute attributeName: State granularity: null + label: + id: state + type: label + labelName: State + localIdentifier: state primaryLabel: id: state type: label valueType: TEXT - attributeHeader: - localIdentifier: region - label: - id: region - type: label - labelName: Region attribute: id: region type: attribute attributeName: Region granularity: null + label: + id: region + type: label + labelName: Region + localIdentifier: region primaryLabel: id: region type: label @@ -131,30 +97,59 @@ interactions: - headers: - measureGroupHeaders: - localIdentifier: price - - localIdentifier: order_amount - format: $#,##0 + - format: $#,##0 + localIdentifier: order_amount name: Order Amount localIdentifier: dim_1 links: - executionResult: 02023d75d2dda2fa71af2a31a06edb83a734234b:5598a2eccd77edb85ac25038aba7e9783f9f586d333a57be6f7d4e7a740454d5 + executionResult: 55ced1d67692055dfcb09c5b020fdee0a1d94190:f4bca63dec753953547db471fe58063ce56a949acc8ffc1ba2f18b04c6b0bcea + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '907' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-CANCEL-TOKEN: *id001 + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular body: - fileName: test_csv - format: CSV - executionResult: 02023d75d2dda2fa71af2a31a06edb83a734234b:5598a2eccd77edb85ac25038aba7e9783f9f586d333a57be6f7d4e7a740454d5 customOverride: labels: region: title: Custom Title Region metrics: - price: - format: '' - title: Sum Of Price order_amount: format: '#,##0.00' title: Order Amount Metric + price: + format: '' + title: Sum Of Price + executionResult: 55ced1d67692055dfcb09c5b020fdee0a1d94190:f4bca63dec753953547db471fe58063ce56a949acc8ffc1ba2f18b04c6b0bcea + fileName: test_csv + format: CSV headers: Accept: - application/json @@ -166,15 +161,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular response: - status: - code: 201 - message: Created + body: + string: + exportResult: f37fa66aa7477cbb2280696efc8cf0864d3e8364 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '59' Content-Type: @@ -187,22 +182,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - exportResult: 8243e110f5d6b040d29a3bb930a61db809084ae8 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/8243e110f5d6b040d29a3bb930a61db809084ae8 body: null headers: Accept: @@ -214,15 +208,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/f37fa66aa7477cbb2280696efc8cf0864d3e8364 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -233,21 +226,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/8243e110f5d6b040d29a3bb930a61db809084ae8 body: null headers: Accept: @@ -259,15 +252,33 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/f37fa66aa7477cbb2280696efc8cf0864d3e8364 response: - status: - code: 200 - message: OK + body: + string: "\uFEFF\"State\",\"Custom Title Region\",\"Sum Of Price\",\"Order\ + \ Amount Metric\"\nAlabama,South,6198.55,6675.95\nAlaska,West,4983.36,5444.84\n\ + Arizona,West,10279.68,10941.25\nArkansas,South,4683.68,5000.96\nCalifornia,West,57411.81,67385.27\n\ + Colorado,West,10012.02,10869.87\nConnecticut,Northeast,2892.16,3196.51\n\ + Delaware,South,3239.72,3535.36\nDistrict of Columbia,South,16394.17,18114.51\n\ + Florida,South,41989.67,53493.27\nGeorgia,South,9865.27,12035.21\nHawaii,West,5219.91,5474.07\n\ + Idaho,West,1840.64,4400.52\nIllinois,Midwest,8804.49,9733.34\nIndiana,Midwest,5982.7,6594.58\n\ + Iowa,Midwest,8467.68,9771.41\nKansas,Midwest,4503.79,4769.79\nKentucky,South,2879.09,3582.94\n\ + Louisiana,South,6511.79,7247.22\nMaryland,South,8417.93,12307.01\nMassachusetts,Northeast,4050.87,4828.45\n\ + Michigan,Midwest,7745.42,11153.4\nMinnesota,Midwest,8189.13,9664.77\nMississippi,South,3967.36,4446.13\n\ + Missouri,Midwest,8546.58,10919.34\nMontana,West,1384.39,1671.55\nNebraska,Midwest,2558.1,2714.19\n\ + Nevada,West,1444.77,2036.04\nNew Hampshire,Northeast,382.19,521.89\nNew\ + \ Jersey,Northeast,2132.86,2443.28\nNew Mexico,West,1328.97,1505.25\nNew\ + \ York,Northeast,21687.02,30318.88\nNorth Carolina,South,8876.18,10445.63\n\ + North Dakota,Midwest,176.71,176.71\nOhio,Midwest,13572.17,19917.4\nOklahoma,South,8748.77,9111.91\n\ + Oregon,West,4465.11,5625.17\nPennsylvania,Northeast,13555.43,15401.82\n\ + Rhode Island,Unknown,18.7,18.7\nSouth Carolina,South,3435.73,3598.61\nSouth\ + \ Dakota,Midwest,640.05,893.55\nTennessee,South,5143.92,5790.24\nTexas,South,44253.95,52551.19\n\ + Utah,West,8360.6,9701.28\nVirginia,South,15696.93,17324.89\nWashington,West,6219.38,7456.11\n\ + West Virginia,South,2654.63,3131.36\nWisconsin,Midwest,10650.42,12116.72\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Disposition: - attachment; filename="=?UTF-8?Q?test=5Fcsv.csv?="; filename*=UTF-8''test_csv.csv Content-Length: @@ -282,34 +293,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: "\uFEFF\"State\",\"Custom Title Region\",\"Sum Of Price\",\"Order\ - \ Amount Metric\"\nAlabama,South,6198.55,6675.95\nAlaska,West,4983.36,5444.84\n\ - Arizona,West,10279.68,10941.25\nArkansas,South,4683.68,5000.96\nCalifornia,West,57411.81,67385.27\n\ - Colorado,West,10012.02,10869.87\nConnecticut,Northeast,2892.16,3196.51\n\ - Delaware,South,3239.72,3535.36\nDistrict of Columbia,South,16394.17,18114.51\n\ - Florida,South,41989.67,53493.27\nGeorgia,South,9865.27,12035.21\nHawaii,West,5219.91,5474.07\n\ - Idaho,West,1840.64,4400.52\nIllinois,Midwest,8804.49,9733.34\nIndiana,Midwest,5982.7,6594.58\n\ - Iowa,Midwest,8467.68,9771.41\nKansas,Midwest,4503.79,4769.79\nKentucky,South,2879.09,3582.94\n\ - Louisiana,South,6511.79,7247.22\nMaryland,South,8417.93,12307.01\nMassachusetts,Northeast,4050.87,4828.45\n\ - Michigan,Midwest,7745.42,11153.4\nMinnesota,Midwest,8189.13,9664.77\nMississippi,South,3967.36,4446.13\n\ - Missouri,Midwest,8546.58,10919.34\nMontana,West,1384.39,1671.55\nNebraska,Midwest,2558.1,2714.19\n\ - Nevada,West,1444.77,2036.04\nNew Hampshire,Northeast,382.19,521.89\nNew\ - \ Jersey,Northeast,2132.86,2443.28\nNew Mexico,West,1328.97,1505.25\nNew\ - \ York,Northeast,21687.02,30318.88\nNorth Carolina,South,8876.18,10445.63\n\ - North Dakota,Midwest,176.71,176.71\nOhio,Midwest,13572.17,19917.4\nOklahoma,South,8748.77,9111.91\n\ - Oregon,West,4465.11,5625.17\nPennsylvania,Northeast,13555.43,15401.82\n\ - Rhode Island,Unknown,18.7,18.7\nSouth Carolina,South,3435.73,3598.61\nSouth\ - \ Dakota,Midwest,640.05,893.55\nTennessee,South,5143.92,5790.24\nTexas,South,44253.95,52551.19\n\ - Utah,West,8360.6,9701.28\nVirginia,South,15696.93,17324.89\nWashington,West,6219.38,7456.11\n\ - West Virginia,South,2654.63,3131.36\nWisconsin,Midwest,10650.42,12116.72\n" + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml index 58293dfef..aa5e67706 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL body: null headers: Accept: @@ -14,46 +11,13 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: - title: Customers Trend areRelationsValid: true content: buckets: @@ -97,9 +61,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -125,7 +89,8 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:18 + createdAt: 2026-04-01 14:36 + title: Customers Trend id: customers_trend meta: origin: @@ -136,12 +101,6 @@ interactions: data: id: admin type: userIdentifier - metrics: - data: - - id: amount_of_active_customers - type: metric - - id: revenue_per_customer - type: metric datasets: data: - id: date @@ -150,59 +109,95 @@ interactions: data: - id: date.month type: label + metrics: + data: + - id: amount_of_active_customers + type: metric + - id: revenue_per_customer + type: metric type: visualizationObject included: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/userIdentifiers/admin + self: http://localhost:3000/api/v1/entities/workspaces/demo/userIdentifiers/admin type: userIdentifier - attributes: - title: Date description: '' tags: - Date + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date type: dataset - attributes: - title: '# of Active Customers' content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:18 + createdAt: 2026-04-01 14:36 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers type: metric - attributes: - title: Revenue per Customer content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:18 + createdAt: 2026-04-01 14:36 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer type: metric - attributes: - title: Date - Month/Year description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL + self: http://localhost:3000/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1052' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular body: fileName: Customers Trend format: CSV @@ -218,15 +213,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular response: - status: - code: 201 - message: Created + body: + string: + exportResult: 3985b644b3f300e3ef45f0cd92767ed1bae4eda4 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '59' Content-Type: @@ -239,22 +234,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - exportResult: 458b7e1f0c68b09df15586401c72bea1e92e2e26 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/458b7e1f0c68b09df15586401c72bea1e92e2e26 body: null headers: Accept: @@ -266,15 +260,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -285,21 +278,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/458b7e1f0c68b09df15586401c72bea1e92e2e26 body: null headers: Accept: @@ -311,15 +304,58 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '0' + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block status: code: 202 message: Accepted + - request: + body: null + headers: + Accept: + - application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, + application/zip, text/csv, text/html + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + response: + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -330,21 +366,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/458b7e1f0c68b09df15586401c72bea1e92e2e26 body: null headers: Accept: @@ -356,15 +392,58 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 response: + body: + string: '' + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '0' + DATE: *id001 + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block status: code: 202 message: Accepted + - request: + body: null + headers: + Accept: + - application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, + application/zip, text/csv, text/html + Accept-Encoding: + - br, gzip, deflate + X-GDC-VALIDATE-RELATIONS: + - 'true' + X-Requested-With: + - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + response: + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -375,21 +454,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/458b7e1f0c68b09df15586401c72bea1e92e2e26 body: null headers: Accept: @@ -401,15 +480,17 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 response: - status: - code: 200 - message: OK + body: + string: "\uFEFF\"Date - Month/Year\",\"2025-04\",\"2025-05\",\"2025-06\",\"\ + 2025-07\",\"2025-08\",\"2025-09\",\"2025-10\",\"2025-11\",\"2025-12\",\"\ + 2026-01\",\"2026-02\",\"2026-03\"\nActive Customers,60,51,60,55,86,89,72,56,90,60,64,65\n\ + Revenue per Customer,115.96454545454546,241.92872340425532,270.91346938775513,92.0542,251.6236842105263,204.48873417721518,187.41,160.19469387755103,178.3658536585366,185.4194,146.6475,111.88542372881356\n" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Disposition: - attachment; filename="=?UTF-8?Q?Customers_Trend.csv?="; filename*=UTF-8''Customers%20Trend.csv Content-Length: @@ -424,18 +505,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: "\uFEFF\"Date - Month/Year\",\"2025-04\",\"2025-05\",\"2025-06\",\"\ - 2025-07\",\"2025-08\",\"2025-09\",\"2025-10\",\"2025-11\",\"2025-12\",\"\ - 2026-01\",\"2026-02\",\"2026-03\"\nActive Customers,60,51,60,55,86,89,72,56,90,60,64,65\n\ - Revenue per Customer,115.96454545454546,241.92872340425532,270.91346938775513,92.0542,251.6236842105263,204.48873417721518,187.41,160.19469387755103,178.3658536585366,185.4194,146.6475,111.88542372881356\n" + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml index 0d3914f1a..eb00cb13e 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/execution/afm/execute body: execution: attributes: @@ -21,22 +18,22 @@ interactions: measures: - definition: measure: + aggregation: SUM + computeRatio: false + filters: [] item: identifier: id: price type: fact - aggregation: SUM - computeRatio: false - filters: [] localIdentifier: price - definition: measure: + computeRatio: false + filters: [] item: identifier: id: order_amount type: metric - computeRatio: false - filters: [] localIdentifier: order_amount resultSpec: dimensions: @@ -58,71 +55,40 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/execution/afm/execute response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Length: - - '907' - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Vary: - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-CANCEL-TOKEN: - - 09d55b2a-9f50-43ae-8268-ffbde6f88afd - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: executionResponse: dimensions: - headers: - attributeHeader: - localIdentifier: state - label: - id: state - type: label - labelName: State attribute: id: state type: attribute attributeName: State granularity: null + label: + id: state + type: label + labelName: State + localIdentifier: state primaryLabel: id: state type: label valueType: TEXT - attributeHeader: - localIdentifier: region - label: - id: region - type: label - labelName: Region attribute: id: region type: attribute attributeName: Region granularity: null + label: + id: region + type: label + labelName: Region + localIdentifier: region primaryLabel: id: region type: label @@ -131,30 +97,59 @@ interactions: - headers: - measureGroupHeaders: - localIdentifier: price - - localIdentifier: order_amount - format: $#,##0 + - format: $#,##0 + localIdentifier: order_amount name: Order Amount localIdentifier: dim_1 links: - executionResult: 02023d75d2dda2fa71af2a31a06edb83a734234b:5598a2eccd77edb85ac25038aba7e9783f9f586d333a57be6f7d4e7a740454d5 + executionResult: 0b139b1b8d35fabad8a39379486307064d07ebc4:f9731994af724fb69d0fabf08f6ed9363a387483cceab3bb62300da3a07c5865 + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Length: + - '907' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-CANCEL-TOKEN: *id001 + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular body: - fileName: test_xlsx - format: XLSX - executionResult: 02023d75d2dda2fa71af2a31a06edb83a734234b:5598a2eccd77edb85ac25038aba7e9783f9f586d333a57be6f7d4e7a740454d5 customOverride: labels: region: title: Custom Title Region metrics: - price: - format: '' - title: Sum Of Price order_amount: format: '#,##0.00' title: Order Amount Metric + price: + format: '' + title: Sum Of Price + executionResult: 0b139b1b8d35fabad8a39379486307064d07ebc4:f9731994af724fb69d0fabf08f6ed9363a387483cceab3bb62300da3a07c5865 + fileName: test_xlsx + format: XLSX headers: Accept: - application/json @@ -166,15 +161,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular response: - status: - code: 201 - message: Created + body: + string: + exportResult: 84385825b9e25262db47072340b7c126d9922be1 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '59' Content-Type: @@ -187,22 +182,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - exportResult: 378a92a07cc081febc1b7cd4b4cb9d695d9c0cc5 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/378a92a07cc081febc1b7cd4b4cb9d695d9c0cc5 body: null headers: Accept: @@ -214,15 +208,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/84385825b9e25262db47072340b7c126d9922be1 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -233,21 +226,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/378a92a07cc081febc1b7cd4b4cb9d695d9c0cc5 body: null headers: Accept: @@ -259,19 +252,351 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/84385825b9e25262db47072340b7c126d9922be1 response: - status: - code: 200 - message: OK + body: + string: "PK\x03\x04\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\ + \0[Content_Types].xml\uFFFD\uFFFD\uFFFDn\uFFFD0\x10E\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD*1tQU\x15\uFFFDE\x1F\uFFFD\x16\uFFFD\uFFFD\x03\\{B,\x1C\uFFFD\uFFFD\ + \f\x14\uFFFD\uFFFD\uFFFD\uFFFDP[Q\uFFFD\uFFFDM\uFFFDd\uFFFD\uFFFDs\u01CE\ + <\x18-\e\uFFFD- \uFFFD\r\uFFFD\x14\uFFFD\uFFFD'2\uFFFD:\x18\uB9E5x\uFFFD\ + <\uFFFDw\"CR\uFFFD(\x17<\uFFFDb\x05(F\xEB\uFFFDd\x15\x013n\uFFFDX\uFFFD\uFFFD\ + (\uFFFDK\uFFFD\uFFFD\uFFFDFa\x11\"x\uFFFDT!5\uFFFD\uFFFD5MeTz\uFFFD\uFFFD\ + \ oz\uFFFD[\uFFFD\uFFFD'\uFFFDS\uFFFD!\uFFFD\uFFFDG\uFFFD\uFFFD\uFFFDQ\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD \t\x1C\uFFFD\uFFFDa-lY\uFFFDP1:\uFFFD\x15q].\uFFFD\ + \uFFFDE\uFFFD7\uFFFD\uFFFD;;\r\uFFFD6\uFFFD5\v\uFFFD\uFFFDKh+\x7F\x036}\uFFFD\ + \uFFFD3\uFFFD\x1A\uFFFD\uFFFD*\u044BjX%M\uFFFD\uFFFD\x14\"J\uFFFD\x17\uFFFD\ + ]\uFFFD\uFFFD\fUe5\uFFFD\u01FC\uFFFD\x02\uFFFD@\x06L\x1E\uFFFD\x12\x12Y\uFFFD\ + e>\uFFFD\uFFFD!\uFFFD\uFFFD\uFFFD\uFFFD=j\uFFFDO$.\uFFFDDZ9\uFFFD\uFFFD\ + G\u0158@\x19\uFFFD\x01\uFFFDq\uFFFD\uFFFD\uFFFD\b\uFFFD\uFFFD\x7F\uFFFD\uFFFD\ + \uFFFD\x7F6\uFFFD\uFFFD9\x02\uFFFD\fi\uFFFD\x11\uFFFD\uFFFD\uFFFD\xF6k\uFFFD\ + (\uFFFDO\uFFFDwb\uFFFD\uFFFDr\uFFFD\uFFFD?\uFFFD\uFFFD\uFFFD\uFFFD\x1Dy\uFFFD\ + \x12\uFFFD7J|\r\\\uFFFD\uFFFD{os\uFFFD\uFFFD>\x19~\x01PK\x03\x04\x14\0\0\ + \0\b\0\0\0?\0\uFFFDI\uFFFD\uFFFD\0\0\0K\x02\0\0\v\0\0\0_rels/.rels\uFFFD\ + \uFFFD\uFFFDN\uFFFD0\f@\uFFFD|E\uFFFD\uFFFD\uFFFDnH\b\uFFFD\uFFFD\uFFFD\ + \ \uFFFD\uFFFD&4>\uFFFD$n\e\uFFFD\uFFFD\uFFFD\u0103\uFFFD\uF250@\f\uFFFD\ + i\a\uFFFDq\uFFFD\uFFFDg\uFFFD\uFFFD\uFFFD<\uFFFD\uFFFDR\uFFFD\x1C\f,\uFFFD\ + \x1A\x14\x05\uFFFD\u0387\uFFFD\uFFFD\uFFFD\uFFFDiq\x0F*\v\x06\uFFFD#\a2p\uFFFD\ + \f\uFFFD\uFFFDf\uFFFDL#J\uFFFD\u027D\uFFFDY\x15H\uFFFD\x06z\uFFFD\uFFFD\uFFFD\ + u\uFFFD=M\uFFFD+\uFFFD\x14\uFFFDO\uFFFDiB)\uFFFD\uFFFD\uFFFDv\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFDt\uFFFD\u0240\u6129\uFFFD\uFFFD@\u06BA%\uFFFD\uFFFD\ + 1\uFFFD5ln[o\uFFFD\uFFFDa\uFFFD gZ\uFFFD\uFFFD(dL\x1D\uFFFD\uFFFDy\uFFFD\ + \uF706W\uFFFD*P\uFFFD\uFFFD]V\u05FB\uFFFD=\uFFFD\uFFFDH\u0421\uFFFD\uFFFD\ + \uFFFDh\x11S\uFFFDN\uFFFD\uFFFDZ\uFFFDu\x1C\uFFFD]\t\uFFFD\u03CCKB\uFFFD\ + \uFFFD\uFFFD\x1C\uFFFD\uFFFD\uFFFD#wY\tc\uFFFD2\uFFFD'7\uFFFD|\0PK\x03\x04\ + \x14\0\0\0\b\0\0\0?\0Du[\uFFFD\uFFFD\0\0\0\uFFFD\x02\0\0\x1A\0\0\0xl/_rels/workbook.xml.rels\uFFFD\ + \uFFFD\uFFFDj\uFFFD0\x10D\uFFFD\uFFFD\n\uFFFD\uFFFDZv\x12J)\uFFFDs)\uFFFD\ + \\\uFFFD\uFFFD\x03\uFFFD\uFFFD\uFFFDLlIh\uFFFDi\uFFFD\uFFFD\x11\tM\x1D\b\ + \uFFFD\a\uFFFD\u010C\u0619\a\uFFFD\uFFFD\uFFFD\uFFFD\u040B\x03&\uFFFDWP\x15\ + %\b\uFFFD&\uFFFD\u03B7\n>wo\uFFFD\uFFFD \uFFFD\uFFFD\uFFFD\uFFFD\x0F\x1E\ + \x15\uFFFDH\uFFFD\uFFFD\x1F\uFFFD\uFFFD\uFFFDk\uFFFD3\uFFFDH\"\uFFFDxR\uFFFD\ + \uFFFD\u32D4d\x1C\x0E\uFFFD\uFFFD\x10\uFFFD\uFFFD&\uFFFDAs\uFFFD\uFFFD\uFFFD\ + Q\uFFFD\uFFFDnQ.\uFFFD\uFFFDI\uFFFDi\x06\uFFFDW\uFFFDbk\x15\uFFFD\uFFFD\uFFFD\ + @\uFFFD\u0188\uFFFD\uFFFD\x0EM\uFFFD\x19|\r\uFFFDk@\uFFFD7*\uFFFDwH{r\uFFFD\ + \uFFFDCuj\uFFFD\x15\\,\uFFFD\uFFFD\uFFFD*r*\uFFFD\uFFFD0\uFFFD9a8\uFFFD\uFFFD\ + \x1F\uFFFDI\uFFFD\u037B\f\uFFFD9\x19\uFFFD\uFFFD>/\uFFFD\x02q\uFFFD\uFFFD\ + \uFFFDW\uFFFD\uFFFD;\uFFFD\uFFFD~p\uFFFD\uFFFD6\uFFFD\uFFFD\u06BF0\uFFFD\ + \uFFFD\uFFFD\uFFFD#PK\x03\x04\x14\0\0\0\b\0\0\0?\0\f\uFFFD\uFFFD\fR\a\0\0\ + \ #\0\0\x18\0\0\0xl/worksheets/sheet1.xml\uFFFD\uFFFDKo\e\uFFFD\x16\a\uFFFD\ + \uFFFD\uFFFD\x14\uFFFD\uFFFD\uFFFDx\x1E|\x05\uFFFD\uFFFD*B\uFFFD.\n\x14\uFFFD\ + \u07B6k\uFFFD\x1E\uFFFDB-\uFFFD!M\uFFFD\uFFFD\u06D7z$%\uFFFD!ke\x11X\x12\ + G\uFFFD\uFFFD\x11\uFFFD?\uFFFD\uFFFD\uFFFD\uFFFD\x7Fn_f\uFFFD\uFFFD\uFFFD\ + a3\uFFFDn\uFFFD`\uFFFD|6\uFFFD\uFFFD\u01C7\uFFFD\uFFFD\uFFFDv\uFFFD\uFFFD\ + \uFFFD\x7F\uFFFD.\uFFFDg\uFFFDi\uFFFD{X\uFFFD\uFFFD\uFFFD\uFFFDv\uFFFD\uFFFD\ + p\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0357q\uFFFD\uFFFD\uFFFDy\x18\uFFFDY~\uFFFD\ + \uFFFD\uFFFDv\uFFFD\uFFFD\u065B\uFFFD\uFFFD\uFFFD\uFFFD\\Z,\uFFFD\ + -\uFFFDh\x01u\uFFFD\x0F\uFFFD\x16T\uFFFD\uFFFD\uFFFD\uFFFDJ\uFFFD\uFFFD\ + o-\x169\u07F7\uFFFD\uFFFD\f\uFFFD\uFFFD\xF98\uFFFDE\uFFFDs\vW\uFFFDp\"\xC7\ + s\x13\x7Fz\uFFFDC\uFFFD\uFFFD9\uFFFD\uFFFD\uFFFD\"\uFFFD[\uFFFD\uFFFDLr\uFFFD\ + \uFFFDLI*\uFFFD8\uFFFD\uFFFDtJ\x12)\uFFFDM\uFFFD\uFFFDC\uFFFDH\uFFFD\uFFFD\ + Hyn\uFFFD\u03873\uFFFD\uFFFD\uFFFDN\uFFFD\u0354\uFFFDR\uFFFD\x13,\uFFFD\uFFFD\ + \\\uFFFD\x12,\uFFFDd|\x141\uFFFD(&\uFFFD\uFFFD`\uFFFDSM\uFFFD\uFFFD\uFFFD\ + T\uFFFD r\uFFFD\uFFFD\uFFFDsWV\uFFFD\uFFFDj\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD$\uFFFDN\uFFFD)\uFFFDJ)N\uFFFD\uFFFDoW\uFFFD\x17\uFFFDt\uFFFD\ + \x01L\x14\uFFFD\uFFFD\u0297]3Pt\x06C;gh\uFFFD\f*g\x129\uFFFD\uFFFD9CQM\uFFFD\ + \x16\uFFFDXy\uFFFD\uFFFD\uFFFD\uFFFD`\uFFFDO&vr\uFFFDf\u03A8r\uFFFD\x1C\uFFFD\ + \uFFFD\x0E*F\uFFFD\x0F\uFFFD((\u0184\x06\uFFFDE\x14\uFFFDz\x12$o\x1C\uFFFD\ + c\uFFFDf\u0324c\uFFFDol\uFFFD\uFFFD\uE769\uFFFD'!%\x13d9SQNr\uFFFD\uFFFD\ + \u0460\uFFFD\t\uFFFD=\uFFFD[\x1DT\uFFFDcyi\uFFFDI/m.\x17\uFFFD\uFFFD\uFFFD\ + \x06\uFFFD\u5E3A\uFFFD\uFFFD\\\uFFFD\x11\uFFFD\uFFFDE\uFFFD\uFFFDE\uFFFD\ + \u04D2L\vW\uFFFD\uFFFD\uFFFD\uFFFDC}\x1E\uFFFDTZ(/|\uFFFDD\uFFFD+\n\uFFFD\ + (\uFFFDV\t$Kp\uFFFDKP\x94\uFFFD\uFFFD.\uFFFDK\uFFFDR&@\uFFFD;\x02\uFFFD\ + J\u06F6\t4N u\uFFFD+x\uFFFD\uFFFD'\uFFFD\uFFFDL\uFFFDC\x15\uFFFD@\x056\uFFFD\ + W\u0636P\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x12\uFFFD@\n*\uFFFD\"[\uFFFDYf-\uFFFD\ + b\uFFFD\uFFFD\x7F\uFFFD\uFFFD\uFFFDY\uFFFDJ\uFFFDfJ^\x18Kh@\uFFFDd\uFFFD\ + R\uFFFD\x18-\eN2kIU\n\uFFFD\uFFFD\x06\x1D\uFFFD\uFFFDm\x15h\uFFFD@j\x05\r\ + \uFFFDT\uFFFD\u02AB\x14\u0468\uFFFDZq\uFFFD\uFFFDh\uFFFDb'j\uFFFD+\uFFFD\ + ^\uFFFD\x04\v\x1Ab\uFFFD\uFFFD%Y\uFFFD}\uFFFD\x13\0\bUY\x03\x18\uFFFD]Zm\uFFFD\ + @\uFFFD\uFFFDj\x0E\uFFFD@Ke-\uFFFDbg\uFFFD\x04\uFFFD\x05J\uFFFD8d]\uFFFD\ + &u\u05B6[\uFFFD\uFFFDB\t\x17\\!\x17\uFFFDta\uFFFD\uFFFD?\uFFFD\uFFFD\uFFFD\ + v\uFFFD^\uFFFD:\uFFFD\x15\uFFFDv\uFFFD\uFFFD\v\uFFFD]x\uFFFD]X\uFFFD\uFFFD\ + ]\uFFFD]\uFFFD\uFFFDbIW@\x0E\x06;\uFFFD\0\uFFFD\uFFFDB-\x17J\uFFFD\uFFFD\ + \n\uFFFD\x10\uFFFD\uFFFD\uFFFD\u05C8\uFFFDd\uFFFD\x12.@\uFFFD\uFFFD\uFFFD\ + N\uFFFD\uFFFD\uFFFDjJ\xC5j=\u0540K\u03B2\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \\\uFFFD\x12\uFFFD\uFFFD\uFFFD#F\xDDE\0\uFFFD\uFFFDB\uFFFD\x16J\uFFFD\uFFFD\ + \u15BC\uFFFD\uFFFDt+\x04vy\r-\uFFFD\uFFFDn\x01\uFFFD#\uFFFD\uFFFDm\uFFFD\ + P\uFFFD\uFFFD\uFFFD-l\uFFFD\uFFFD\uFFFD\uFFFDnE\u0233\x179\vZa\uFFFDV\uFFFD\ + M\uFFFD\x18\uFFFDm\uFFFDP\uFFFD%g\x1DK\uFFFDb\uFFFD\uFFFD\uFFFD[\uFFFD\uFFFD\ + \0\uFFFD\u05ABX\uFFFD\uFFFD\u05EB\uFFFD\uFFFD8u\u05B6[\uFFFD\uFFFDB\uFFFD\ + \x16^\uFFFD\x16\uFFFDnE\uFFFD\uFFFD8\uFFFD\x01\uFFFDp\uFFFDUk\uFFFD\uFFFD\ + \uFFFD\uFFFD\u0176\\\uFFFD\uFFFDB)\x17^\uFFFD\uFFFD\uFFFDj\uFFFDE\uFFFD\r\ + \uFFFDQ\uFFFDZl\uFFFD,\uFFFD\uFFFD]\\m\uFFFDP\uFFFDER.\uFFFDB.\uFFFD\uFFFD\ + [\uFFFDE#\uFFFDX\N!/\r\uFFFD\x03\x17\uFFFD\uFFFDB\r\x17I\uFFFD\uFFFD\x01\ + \uFFFD*k\t\x17\x1CwO\uFFFD\x1A\uFFFDJ\uFFFD\uFFFD\\\uFFFD\e\uFFFD\uFFFD\x02\ + \u0506\uFFFD4\\$\uFFFD\x06\\r|\uFFFD\x12.\u0280\uFFFD)\u040AJ\uFFFD\uFFFD\ + l\uFFFD\uFFFDNU\uFFFD\uFFFD\x16i\uFFFDH\uFFFDE\r\uFFFDT\u0492-\x04B\x13\u056E\ + U\uFFFD\x162\uFFFD\uFFFDVgJHm\uFFFDH\uFFFDER-j\uFFFD\uFFFD6\uFFFDJ\uFFFD\ + r\uFFFDh\uFFFD\uFFFD\x01T-\uFFFD\uFFFDu\u076D+\uFFFD\uFFFD\x04j\uFFFDH\uFFFD\ + \x056\uFFFDRu\uFFFD\uFFFD\uFFFD>\x06\uFFFD\uFFFDB%[d\t\uFFFD\uFFFD\uFFFD\ + \u02B6\uFFFD\"\uFFFD\x1C\u0117\uFFFDpKZ@\uFFFD[1\uFFFD^\uFFFD\uFFFDT\uFFFD\ + \nrv\uFFFDw0\uFFFD6\\\uFFFD\uFFFD\"\t\x17]\uFFFD\uFFFD\x12.\uFFFDY\uFFFD\ + \x1C\uFFFD\uFFFDtK\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\uFFFD\x16I\uFFFD\uFFFD\ + \n\uFFFD\uFFFDW\x1D\uFFFD\x05\uFFFD{/T\uFFFD\uFFFDR\uFFFD8\uFFFD\u01AC6[\uFFFD\ + \u0652\uFFFD,\uFFFD\uFFFD\uFFFD\uFFFD\x03\u0542+p\uFFFD\uFFFD+U\v\uFFFD\ + <\uFFFD*\uFFFD\x10\uFFFDm\uFFFDH\uFFFD\u0152-j\uFFFD\uFFFDF\uFFFDj\uFFFD\ + \uFFFD\uFFFD\x19\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD-\uFFFD\u0455\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD\"\uFFFD\x16K\uFFFD\uFFFD\uFFFD\x1A\t*\uFFFD\u0239<\uFFFD\uFFFD\ + \uFFFDB*\uFFFD\x02\uFFFD6{\uFFFDY\uFFFDp[.\uFFFDr\uFFFDi\uFFFD\er\uFFFD\uFFFD\ + \uFFFD\x03W\u06C5Q\uFFFD\x0Fp\uFFFDUh:5\uFFFDZ\uFFFD\u0552\uFFFDX\uFFFD\x15\ + \uFFFD-.\uFFFD\"&g\uFFFD,)\uFFFDj\uFFFDK\uFFFD\uFFFDN_\uFFFDZ\u0738u%\uFFFD\ + \uFFFDZr\x10\uFFFD\uFFFD\uFFFD\x15[c\uFFFD\uFFFD+.\u044A\uFFFD\uFFFD\uFFFD\ + An\uFFFD\uFFFD\uFFFD,\uFFFDfq\uFFFD,U\uFFFDj\uFFFD\x102\uFFFDI\uFFFD\uFFFD\ + \uFFFD\x0EaH\uFFFD`\uFFFD\x16V\uFFFD\x1E\uFFFD\x16\uFFFD\uFFFD]\uFFFD+\uFFFD\ + b\uFFFDF\0\uFFFDK\uFFFD\uFFFD\uFFFDZ\uFFFD\uFFFD\uFFFD\uFFFD\x16\uFFFDsWn\uFFFD\ + \u015A,\uFFFDdq\uFFFD,u\u04ED\uFFFD#$o\uFFFD\uFFFDdq\uFFFDE\uFFFD\a\0\uFFFD\ + \uFFFD\uFFFD^\uFFFDm\uFFFD\uFFFDZ/\uFFFDzqC/U\uFFFDJ/\uFFFD\uFFFD[\x1A\\\ + \uFFFD\x15\b\uFFFD;\uFFFD\uFFFD6_\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDK\uFFFDb\uFFFD\ + \uFFFD%_\uFFFD\uFFFD\uFFFD-\uFFFD^q\uFFFDW`\uFFFDK5\uFFFDm\uFFFDX\uFFFD\uFFFD\ + $_\uFFFD\uFFFDKU\uFFFDZuy\uFFFD\uFFFDT\uA4B5\uFFFD\uFFFDE\u043D\x7F\uFFFD\ + m\uFFFDX\uFFFD\uFFFD$_\uFFFD\uFFFDK\r_\x15_\uFFFD;\uFFFD\uFFFD_\uFFFD\uFFFD\ + \v\x01|y?\uFFFDvQ\uFFFD\uFFFD\uFFFDu\uFFFD4\uFFFD\uFFFD\uFFFD?mv\uFFFD\uFFFD\ + \uFFFD\uFFFDOnM\uFFFDn\uFFFD\uFFFD_a\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + _9\uFFFD\uFFFDq\uFFFD\uFFFD\uFFFD\uFFFDG\uFFFD\uFFFD\uFFFDa\uFFFD\x1F\x1F\ + \uFFFD\uFFFDq\x1C\uFFFD\uFFFD\x0F\uFFFD?\uFFFD\uFFFD\uFFFD\u35BB\uFFFD\x01\ + PK\x03\x04\x14\0\0\0\b\0\0\0?\0\b\uFFFD\uFFFD\uFFFDL\x01\0\0)\x02\0\0\x0F\ + \0\0\0xl/workbook.xml\uFFFDQ\uFFFDN\uFFFD0\x10\uFFFD\uFFFD\x15\uFFFD\uFFFD\ + i\x1EJ#Z5\uFFFD\uFFFDKTB\uFFFD\uFFFD\uFFFDGd\uFFFDMc\u0571#\uFFFD!\uFFFD\ + \u07F3I\uFFFD\x027N\uFFFD3\uFFFD\x19\uFFFD\uFFFDW\uFFFDV\uFFFD\v\uFFFD\uFFFD\ + Fg\x10\uFFFDB`\uFFFD\v#\uFFFD>d\uFFFD}\uFFFD\uFFFD\x01\uFFFD<\u05C2+\uFFFD\ + 1\uFFFD\x13:X\uFFFDW\uFFFD\uFFFD\uFFFD\uFFFD1GFz\uFFFD2\uFFFD\uFFFDo\uFFFD\ + A\uFFFD\uFFFD\nk\uFFFDf\uFFFDAM/\uFFFD\uFFFD5\uFFFD\x04\uFFFD!p\uFFFDE.\\\ + \uFFFD\uFFFDk\x15\uFFFDa\uFFFD\x065\uFFFD\x1A\uFFFD\x0EK\uFFFD\x1F\x0FS\uFFFD\ + \uFFFD\uFFFD{S\uFFFD5j\x7F6\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD]%\e\a\uFFFD\uFFFD\ + \uFFFD\nw\uFFFD@\uFFFD7\uFFFD\v\uFFFDi\uFFFD^\x01S\uFFFD\uFFFD\a!=\uFFFD\ + \f\x12\uFFFD\uFFFD\uFFFD?\uFFFDm\uFFFD\uFFFDV\uFFFD\x01\uFFFD\uFFFD9\x04\ + \uFFFD%\uFFFDe\x02K\uFFFD*\uFFFD\uFFFD\uFFFD&w:W\uFFFD\uFFFDq:L\x0ES;\uFFFD\ + \uFFFD\uFFFD\x11\r\uFFFD\uFFFD{\uFFFD\uFFFD\uFFFD2\uFFFD\x13\uFFFD\uFFFD\ + iB\uFFFD\x1CX7\uFFFD{)|ED\x1A..\uFFFD\x13\uFFFDC\uFFFD3X\uFFFDi8\uFFFD\a\ + \uFFFD\uFFFD\uFFFD\uFFFDM\uFFFD\uFFFD1\uFFFD\uFFFD\x1C\x1F\uFFFDr=}\uFFFD\ + @o(BDy\uFFFD\uFFFD\x1A\uFFFD\x11\uFFFDh2)\v\uFFFD\n\n4\uFFFDq0N\uFFFD\uFFFD\ + \x02X\uFFFD*uG\u072B~6|4\x18DS\uFFFD\uFFFD\ePK\x03\x04\x14\0\0\0\b\0\0\0\ + ?\0\uFFFD\xC2\uFFFD\x13\x02\0\00\x06\0\0\x14\0\0\0xl/sharedStrings.xml}TMo\uFFFD\ + 0\f\uFFFD\uFFFDW\b\uFFFD\uFFFD\uFFFD\x06\uFFFD\x03C\uFFFD\uFFFDH\uFFFD5\uFFFD\ + \uFFFD\x14M\uFFFDbG\uFFFDfc\xB2\uFFFD\uFFFDt\uFFFD\uFFFD\uFFFDO^/C\uFFFD\ + \r\uFFFD\uFFFD\uFFFDQz$\x1F\uFFFD\uFFFD\uFFFDs\uFFFD\uFFFD\x13F!\x0E\uFFFD\ + \uFFFD\uFFFD\u0668p\x18*\uFFFD)\uFFFD&\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \x89B\uFFFD\uFFFDs\uFFFDIqD)\u03A7o\uFFFD\"\uFFFD\uFFFD\uFFFD \uFFFD\uFFFD\ + Q\uFFFD\x7F)K\uFFFD\x1A\uFFFD@\uFFFDx\uFFFD!1\uFFFD\x1C;\uFFFD\uFFFD\ew\uFFFD\ + \uFFFD#B-\r\uFFFDv\uFFFD|?\x1A},;\uFFFDP\uFFFD\uFFFD\uFFFD\uFFFDIv\uFFFD\ + d\uFFFD@\uFFFDz\uFFFD\uFFFD\"\x1F>\x15\u04F1\uFFFDt\uFFFD\u04F5\uFFFD\uFFFD\ + \uFFFD\uFFFD\x1C\uFFFDWp\u058Br\uFFFD6\uFFFD\x1E\uFFFD\x1D\uFFFDR\uFFFD\uFFFD\ + !\uFFFDs\uFFFDGw\e\uFFFD2\uFFFDW\uFFFD\uFFFD\uFFFD.\uFFFDA\uFFFD-QS\uFFFD\ + i\u0205\uFFFD-t\uFFFD\uFFFD\uFFFD\uFFFDh\uFFFD\x17\x0E\x19\uFFFD\uFFFD \ + \ &{\uFFFD\uFFFD\x13\u021C\uFFFD\uFFFD\uFFFD\b5[<\x04\uFFFD\uFFFD\uFFFD\ + ^O\uFFFD9z8@45\uFFFDI\uFFFD\uFFFD\uFFFD\uFFFDK\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + ]&5\uFFFD\r\uFFFD\x15\uFFFDk6\uFFFD*\uFFFD\x10\uFFFD\uFFFD\uFFFD\x1A\x1A\ + \uFFFD\uFFFD\uFFFD{\nL\uFFFD\uFFFDE\uFFFD\tl\uFFFD\x16|0\uFFFDu\uFFFDu\uFFFD\ + \x18\uFFFD\uFFFD\uFFFD\uFFFD)\uFFFD\uFFFD{\uFFFD\uFFFD\uFFFDK\uFFFDG\uFFFD\ + \uFFFD\uFFFD\uFFFD\"P5\uFFFD\uFFFD\uFFFDQYR\uFFFD\uFFFD\x0E\uFFFDL-)\uFFFD\ + \ \uFFFDV\uFFFDD\uFFFDo\uFFFD7\uFFFD\x19(\uFFFD\uFFFD9h&\uFFFD\e\uFFFD\uFFFD\ + \u0708\uFFFD\uFFFD\x13X\uFFFDn\uFFFD\u0BA0\uFFFDKCv\x02\x06\uFFFD[Zm4\uFFFD\ + \x1A\uFFFD%>Se\uFFFD\e\uFFFD\uFFFD\x1C[\uFFFDs\uFFFD\uFFFD\uFFFD r2\u05A6\ + \uFFFDC\uFFFDi\u036A!\uFFFD\uFFFDj}\x1A\x1A\uFFFD]\uFFFD\uFFFD;\uFFFD\u0277\ + \x18\uFFFD\x1C\uFFFD\x13d\x16\uFFFD\uFFFD\x1A\uFFFDBr\x16\uFFFD\uFFFD\uFFFD\ + O\u03AFl>\uFFFD\r\x0E>\v\uFFFD\uFFFDn\uFFFD\uFFFD\uFFFD\uFFFDBs\uFFFD\uFFFD\ + \uFFFD\uFFFDA\uFFFD|\x1F Y\x15vj\uFFFD|\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x18\ + I\uFFFDA\u023ErC\x15\uFFFD\uFFFD\uFFFD\x16!XbI\uFFFD!\x13\x7F\x1F\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDO\x7F\x03PK\x03\x04\x14\0\0\0\b\0\0\0\ + ?\0]\uFFFD:4\uFFFD\x02\0\0\uFFFD\x0F\0\0\r\0\0\0xl/styles.xml\uFFFDWQo\uFFFD\ + 0\x10~\u07EF\uFFFD\uFFFD\uFFFD-\x10\uFFFDd\uFFFD\x04T[\uFFFDH\uFFFD\uFFFD\ + jR\uFFFDi\uFFFD\x06\eb\uFFFD\uFFFD\uFFFD8U\uFFFD_\uFFFD3\x10 \e$\uFFFD\u04A5\ + ]\uFFFD}|\uFFFD\uFFFD\uFFFD;\uFFFD\x03\uFFFDr\uFFFD\tt\uFFFDt\uFFFD\uFFFD\ + \f\uFFFDd\uFFFDb\uFFFDd\uFFFD(\uFFFDi\uFFFD\uFFFD\uFFFD.\uFFFD,0*\f\uFFFD\ + \uFFFD\b%Y\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD+\uFFFD0[\uFFFDnV\uFFFD\x19\ + \x04\f\uFFFD\b\uFFFD\u0298\uFFFD\uFFFD\uFFFD\x14\uFFFDe\uFFFD\x18\uFFFD\uFFFD\ + I\uFFFD\uFFFD(\uFFFD\x11\x03S\uFFFD:E\uFFFD\x19\uFFFD\uFFFDu\u0284\uFFFD\ + \uFFFD\uFFFD\uFFFD\b\uFFFD8\uFFFD\uFFFD:[f\uFFFD@\uFFFDZK\x13`\uFFFD1\uFFFD\ + \uFFFD\U000890B6\uFFFD\x05F\x15\u0755\uFFFD e\uFFFDz4\x1E\uFFFD\uFFFD\u04CB\ + \uFFFD\uFFFD\uFFFD\x1D\uFFFDc\u05F5h\uFFFD\uFFFD\x16\uFFFD\uFFFD\uFFFDm\uFFFD\ + \v\\\x19B\uFFFD\uFFFDGwD\0\uFFFD\uFFFD\uFFFDc%\uFFFDF\x06V\x05<\uFFFDE\uFFFD\ + \uFFFDU\uFFFD+\"x\uFFFD\uFFFD5&$\uFFFDb[\uFFFD=k(\x13Q\uFFFD2.\uFFFD.cW\x11\ + \uFFFD\uFFFD,\uFFFD\uFFFD\uFFFD\uFFFD4%\uFFFD\uFFFD9\u01A8\uFFFD(\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\v\uFFFD\uFFFD\x1FM[^l\x01\uFFFD\x10\uFFFD\x05\0C\uFFFD\ + \uFFFD\uFFFD\x18\uFFFD\uFFFD\x12&\uFFFD\x1E\uFFFDns\u020B\uFFFD=X\u0454\uFFFD\ + #\uFFFDT\uFFFD\uFFFD\u011B=\u0721P\uFFFDS\uFFFD\"\uFFFD\uFFFD_dT\uFFFD\uFFFD\ + \uFFFD\uFFFD\r\uFFFD\uFFFD\x06{\u04B2w\x18O\uFFFD\uFFFDt\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD\v\uFFFD3R\uFFFD\xB3\uFFFD\uFFFD\uFFFD\x02\uFFFDL\uFFFD/Xb\uFFFD\ + ]\uFFFDte\uFFFDF\uFFFD6\uFFFD2Fe0\uFFFD\uFFFD\uFFFDJ\x12a\x03\uFFFD<\x1E\ + \uFFFD\uFFFD\uFFFDc \uFFFDf\uFFFD\uFFFDx\uFFFD7\uFFFD\u06A8z\x0F;\x15\uFFFD\ + \uFFFD\x01\uFFFD3\uFFFD\uFFFD3\u0290xp\uFFFD\uFFFDGZ\x0Ey\uFFFD\uFFFDF\uFFFD\ + B\v%\uFFFDW\uFFFD\x111\uFFFD\x1A\uFFFDP\uFFFD\x1C\uFFFD\uFFFD\uFFFDe|f\uFFFD\ + \uFFFD\0N\uFFFD\uFFFD\tqc\uFFFD~$\uFFFD\uFFFD1\x01\uFFFDM\uFFFDi\uFFFD\uFFFD\ + m\uFFFD\uFFFD\x19\x99S\x0F+\uFFFDjb\uFFFD\uFFFDl\x15w\uFFFD\uFFFD\uFFFD\ + +^\uFFFDI\uFFFD\0C\u0793\x01\uFFFDI\uFFFDH\uFFFD\uFFFD\uFFFDRU\v\uFFFDf\x1F\ + K`;\uFFFD x*3\uFFFD\uFFFD\x01\uFFFDM\uFFFDJi~\x0F\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFDb\uFFFD\uFFFDdxl\uFFFDP\uFFFDr\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x17\uFFFD\ + \uFFFDk\uFFFDy]}\uFFFD\uFFFD\uFFFDl/\uFFFDS{\uFFFDR\u04C1L\\\uFFFD\uFFFD\ + L\f\uFFFD=\uFFFD\uFFFD\uFFFD\x15\uFFFD\uFFFD^\uFFFD\uFFFD\uFFFD\uFFFDz\uFFFD\ + EL/\u02F7\uFFFDN\uFFFDN\uFFFD]\x1EX]\uFFFD1 \uFFFD\x1E\uFFFD>;\uFFFD\uFFFD\ + \uFFFDK\uFFFD\u079F\uFFFD\uFFFD\uFFFDy\x1Fzr\uFFFD]\uFFFD\uFFFD\uFFFDU8\uFFFD\ + J\uFFFD\uFFFD\uFFFDt\uFFFD\uFFFD^\uFFFDj\uFFFD\uFFFD~\uFFFD\x04\uFFFD\uFFFD\ + \n\x16\uFFFD\uFFFDDk.\f\uFFFD=}\n8\uFFFDmQ\uFFFD]C\"\uFFFD\uFFFD\u074B\x02\ + \x1C\uFFFD%d-\uFFFDms3\uFFFD\uFFFD\uFFFD\v\uFFFD|\uFFFD\uFFFDkP_\uFFFD\uFFFD\ + 25\uFFFD\x1D\x7F\uFFFD\uFFFD\uFFFDK\x05\uFFFDwt\uFFFD\vPK\x03\x04\x14\0\0\ + \0\b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0xl/theme/theme1.xml\uFFFD\ + YM\uFFFD\uFFFDD\x18\uFFFD\uFFFD+F\uFFFD\uFFFD\uFFFD\x13;\u036E\uFFFD\uFFFD\ + 6\u0664\uFFFD\uFFFD\uFFFD\uFFFD\u0774\uFFFD\u01C9=\uFFFD\uFFFD\x19{\uFFFD\ + \uFFFD\uFFFDnsC\uFFFD\x11\t\tQ\x10\x17$n\x1C\x10P\uFFFD\uFFFD\uFFFD\uFFFD\ + _\uFFFDP\x04E\uFFFD_\uFFFD\uFFFDG\uFFFD\uFFFDf\uFFFD\u0376\uFFFD\0\uFFFD\ + 9$\uFFFD\uFFFD\uFFFD~\x7F\uFFFD\x1D\uFFFD\uFFFD\a1CGDH\u0293\uFFFD\uFFFD\ + \\\uFFFDY\uFFFD$>\x0Fh\x12\uFFFD\uFFFD;\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFDI\uFFFD\x19OH\u06DA\x12i]\uFFFD\uFFFD\uFFFD*\uFFFDT\x11\uFFFD\t\x02\ + \uFFFDDn\uFFFD\x15)\uFFFDn\u06B6\uFFFDa\e\uFFFD\uFFFD<%\t\uFFFD\eq\x11c\x05\ + K\x11\u0681\uFFFD\uFFFD\uFFFD6fv\uFFFDVk\uFFFD1\uFFFD\uFFFD\uFFFD\x12\x1C\ + \x03\uFFFD\u06E3\x11\uFFFD\t\x1Ad,\uFFFD\uFFFD\x19\uFFFD\x1E\uFFFD\uFFFD\ + D\uFFFDl\uFFFDg\uFFFD\uFFFD\uFFFD%\uFFFD\x1496\x18;\u064F\uFFFD\uFFFD.\x13\ + \uFFFD\b\uFFFD\uFFFD\x05r\x02~< \x0F\uFFFD\uFFFD\x18\uFFFD\nn\uFFFD\uFFFD\ + Z\uFFFD\uFFFD\uCB6B\uFFFD\uFFFD\uFFFD\uFFFD\x15\uFFFD\x1A]?\uFFFD\uFFFD\ + t%A0\uFFFD\uFFFDt\"\x1C\uFFFD\t\uFFFD\uFFFD\uFFFDqeg\u03BF^\uFFFD_\uFFFD\ + \uFFFDz\uFFFDn\u03D9\uFFFD\uFFFD\x01\uFFFD\uFFFD\uFFFDRg\t\uFFFD\uFFFD[Ng\uFFFD\ + S\x03\x15\uFFFD\u02FC\uFFFD5\uFFFD\uFFFDV\uFFFD\x1A\uFFFD\uFFFD\x12~\uFFFD\ + \uFFFD\uFFFDx\e\x15|c\uFFFDw\uFFFD\uFFFDZ\uFFFD\u076EW\uFFFD\uFFFD\x02\uFFFD\ + -\uFFFD\uFFFD\uFFFD\uFFFDv\uFFFD\x15\uFFFD\uFFFD\uFFFD7\uFFFD\uFFFD\uFFFD\ + +\eM\uFFFD\uFFFD\uFFFDA\x11\uFFFD\uFFFDx\t\uFFFD\uFFFDs\x1E\uFFFD9d\uFFFD\ + \uFFFD\r#\uFFFD\x05\uFFFD\uFFFD,\x01\x16([\u02EE\uFFFD>Q\uFFFDr-\uFFFD\uFFFD\ + \uFFFD\uFFFD\x03 \x0F.V4Aj\uFFFD\uFFFD\x11\uFFFD\x01\uFFFD\uFFFD\uFFFDPP\uFFFD\ + \t\uFFFD\uFFFD\x04kw\uFFFD-_.me\uFFFD\uFFFD\uFFFD\x05MU\uFFFD\uFFFD(\uFFFD\ + P\x11\v\u022B\uFFFD?\uFFFDz\uFFFD\x14\uFFFDz\uFFFD\uFFFD\uFFFD\u1CD3\uFFFD\ + ?\uFFFD\uFFFD\ + \uFFFDO\u041FO\uFFFD}\uFFFD\uFFFDK3^\uFFFD\uFFFD\uFFFD~\uFFFD\uFFFD\uFFFD\ + _\uFFFD0\x03\uFFFD\x0E|\uFFFD\u0553\u07DF=y\uFFFD\uFFFDg\x7F|\uFFFD\uFFFD\ + \0\uFFFD\x16x\uFFFD\uFFFD\a4&\x12\uFFFD\"\uFFFD\uFFFD\uFFFD`\uFFFDA\0\x19\ + \uFFFD\uFFFDQ\f\"L+\x148\x02\uFFFD\x01\uFFFDSQ\x05xk\uFFFD\uFFFD\t\uFFFD\ + !U\uFFFD\uFFFD\x15\uFFFD\0L\uFFFD\uFFFD\uFFFD\x15]\x0F#1Q\uFFFD\0\u070D\uFFFD\ + \np\uFFFDs\uFFFD\uFFFD\uFFFDh\uFFFDn&K7g\uFFFD\uFFFDf\uFFFDb\uFFFD\uFFFD\ + \x0E0>2\uFFFD\uFFFD\nmo\uFFFDB&S\x13\uFFFDnD*j\uFFFD3\uFFFD6\x0EIB\x14\uFFFD\ + \uFFFD\uFFFD1!\x06\uFFFD{\uFFFDV\uFFFD\uFFFDG}\uFFFD%\x1F)t\uFFFD\uFFFD\x0E\ + \uFFFDF\uFFFD\f\uFFFDP\uFFFD\uFFFDn\uFFFD\x18\uFFFD25)\b\uFFFD\uFFFD\uFFFD\ + f\uFFFD.\uFFFDpfb\uFFFDC\uFFFD\uFFFDH(\b\uFFFDL,\t\uFFFD\uFFFD\uFFFD:\uFFFD\ + (\x1C\e5\uFFFD1\u04D17\uFFFD\uFFFDLJ\x1EN\uFFFD_q\uFFFDT\x10\uFFFD0\uFFFD\ + z\x01\uFFFD\uFFFDDs[L+\uFFFD\uFFFDb\uFFFDD\u01B0\uFFFDi\\E\nE\uFFFD&\uFFFD\ + M\u0339\uFFFD\uFFFD\uFFFD\uFFFDn\uFFFD\uFFFD\u05283M\"\x1D\uFFFD\uFFFD\x1C\ + C\uFFFDb\uFFFD\u03D5Q\t^\uFFFD\uFFFDl\rq\uFFFD\uFFFD\uFFFDp\u07E5D\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD02'Hvg\"\u02AE]\uFFFD1M\uFFFDj\u018CB7~\u07CCg\uFFFD\ + mx4\uFFFDJ\uFFFDt\v^\uFFFD\uFFFD\x1F6\uFFFD\x1D\uFFFD\uFFFDfg@@c\uFFFD\u01C3b\uFFFD\uFFFD\uFFFD\r\uFFFDl\uFFFD\ + U(uA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x1AW\uFFFDN\uFFFDS\0\u05D4\uFFFDxfi\u0799\ + \uFFFDl\u035BP\r\bg\a\x7F\uFFFDY/DC\uFFFD`F\uFFFD\uFFFD\uFFFD\x05\uFFFD\ + YX.\uFFFDO\uFFFD\b\x12\uFFFDR\uFFFD,\uFFFD\uFFFD\uFFFD\x10\ + tni\uFFFDe\uFFFD\uFFFD\uFFFD1j\x11\uFFFD\u058Ax_\uFFFD\uFFFD9\uFFFD\uFFFD\ + \uFFFD\uFFFDg\uFFFD{sg{\x06_{g\uFFFD\uFFFD^.Q[;\uFFFD\u4AE5?\uFFFD\uFFFD\ + \uFFFD>\uFFFD\u0781\uFFFD\u0484)Y\uFFFDMz\0G\uFFFD\uFFFD\uFFFD/\x03\uFFFD\ + c/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0t\uFFFD\uFFFD\x18%\x01\ + \0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDj\uFFFD0\x10\uFFFD\ + \uFFFD}\n\uFFFD\uFFFD-\uFFFD1\uFFFD\x15\uFFFD\x03m\u0269\uFFFDBSZz\x13\uFFFD\ + &\x11\uFFFD~\uFFFD\uFFFD:y\uFFFD*N\uFFFD$\uFFFDS\uFFFD\uFFFD\uFFFD\uFFFD\ + vvQ=\uFFFD\uFFFD.\uFFFD\x05\x1F\uFFFD5\r\uFFFD\x05A\x19\x18a\uFFFD2\uFFFD\ + \x06\uFFFD/\uFFFD\uFFFD=\uFFFDB\uFFFDF\uFFFD\uFFFD\x1Ah\uFFFD\x0E\x02\uFFFD\ + \uFFFDw\uFFFDpLX\x0F\uFFFD\uFFFD:\uFFFDQA\uFFFD\x12\uFFFD\x04&\\\uFFFD61:\uFFFD\ + q\x10\e\uFFFD<\x14\uFFFDa\uFFFD\uFFFD\uFFFD^\uFFFDJ\uFFFD\u018E\uFFFDo\uFFFD\ + \x06\\\x122\uFFFD\x1A\"\uFFFD&O\uFFFD\uFFFD9jKRNsR\uFFFD\ + .i\uFFFD*\uFFFD\uFFFD\uFFFD\uFFFD~\uFFFDU\uFFFD\x19\uFFFD\uFFFDC\uFFFDM<\x01\ + \x0E\uFFFD\uFFFD?A\uFFFD\aPK\x03\x04\x14\0\0\0\b\0\0\0?\0\x04qEc{\x01\0\0\ + \x13\x03\0\0\x10\0\0\0docProps/app.xml\uFFFDR\uFFFDN\uFFFD0\x10\uFFFD\uFFFD\ + \x15\uFFFD\uFFFD\uFFFDi\uFFFDZ\uFFFD\uFFFD1Z\uFFFD]\uFFFD\uFFFD\uFFFDJ-p\\\ + \x19g\uFFFDXul\uFFFD3D)_\uFFFD\uFFFD\uFFFD!\uFFFD=\uFFFD\u04DB7O\uFFFD\uFFFD\ + 3\x16\uFFFD]c\uFFFD\x16\"\x1A\uFFFD\n6\uFFFD\uFFFD,\x03\uFFFD}i\u073E`\uFFFD\ + \uFFFD?\uFFFD7,CR\uFFFDT\uFFFD;(\uFFFD\x11\uFFFD\uFFFD\uFFFD+\uFFFD\uFFFD\ + >@$\x03\uFFFD%\a\uFFFD\x05\uFFFD\uFFFD\x92s\uFFFD54\ng\uFFFD\uFFFDR\uFFFD\ + \uFFFDQ\uFFFD\u02B8\u7FAA\uFFFD\uFFFD;\uFFFD_\ep\uFFFD\x17y\uFFFD\uFFFD\ + CG\uFFFDJ(\uFFFD\uFFFDh\uFFFDN\uFFFD\u02D6\uFFFDkZz\uFFFD\uFFFD\xE7\uFFFD\ + 1$?)~\uFFFD`\uFFFDV\uFFFD\x1E)\uF34E\x1E}E\uFFFD\uFFFDN\uFFFD\x15|\uFFFD\ + \x14\uFFFDh\v\uFFFD5\x1A:\uFFFD\\\uFFFDi)\uFFFDZYX%cY)\uFFFD \uFFFD\a!\u05A0\ + \uFFFD\uFFFDm\uFFFD\uFFFD(EK\uFFFD\x164\uFFFD\uFFFD\uFFFDyKS[\uFFFD\uFFFD\ + E!\uFFFDq\n\u05AAh\uFFFD#v\uFFFD\uFFFD\uFFFD\x01\u06C0\x14\u5CCF\a\uFFFD\ + \x01\b\x05\x1F\uFFFD\x01N\uFFFDSl~\uFFFD\uFFFD H\uFFFDR\uFFFD\uFFFD \t_F\uFFFD\ + \x19\uFFFD\uFFFD\x0F\uFFFDFE\uFFFDO\uFFFD\uFFFD4\uFFFDM2\x12 \uFFFD\uFFFD\ + ,v_\"\uFFFD/\uFFFDd\uFFFD\uFFFDMP.\u0350\uFFFD\uFFFDq\a|\f;\x7F\uFFFD\b\uFFFD\ + \x13\uFFFD$\u0176V\x11\u02B4\uFFFDq\uFFFD#!\uFFFD)Z\uFFFD\uFFFD~U+\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDt\uFFFD\uFFFDr\uFFFD\uFFFD\uFFFD\ + \uFFFD\fk?s\uFFFD\x7F|g\uFFFD\x0EPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\ + a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\0\0\0\0\ + [Content_Types].xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\uFFFDI\uFFFD\uFFFD\ + \0\0\0K\x02\0\0\v\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x01\0\0_rels/.relsPK\x01\ + \x02\x14\x03\x14\0\0\0\b\0\0\0?\0Du[\uFFFD\uFFFD\0\0\0\uFFFD\x02\0\0\x1A\ + \0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x02\0\0xl/_rels/workbook.xml.relsPK\x01\ + \x02\x14\x03\x14\0\0\0\b\0\0\0?\0\f\uFFFD\uFFFD\fR\a\0\0 #\0\0\x18\0\0\0\ + \0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x03\0\0xl/worksheets/sheet1.xmlPK\x01\ + \x02\x14\x03\x14\0\0\0\b\0\0\0?\0\b\uFFFD\uFFFD\uFFFDL\x01\0\0)\x02\0\0\x0F\ + \0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD:\v\0\0xl/workbook.xmlPK\x01\x02\x14\x03\ + \x14\0\0\0\b\0\0\0?\0\uFFFD\xC2\uFFFD\x13\x02\0\00\x06\0\0\x14\0\0\0\0\0\ + \0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\f\0\0xl/sharedStrings.xmlPK\x01\x02\x14\x03\ + \x14\0\0\0\b\0\0\0?\0]\uFFFD:4\uFFFD\x02\0\0\uFFFD\x0F\0\0\r\0\0\0\0\0\0\ + \0\0\0\0\0\uFFFD\uFFFD\uFFFD\x0E\0\0xl/styles.xmlPK\x01\x02\x14\x03\x14\0\ + \0\0\b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0\0\0\0\0\0\0\0\ + \0\uFFFD\uFFFD\x02\x12\0\0xl/theme/theme1.xmlPK\x01\x02\x14\x03\x14\0\0\0\ + \b\0\0\0?\0t\uFFFD\uFFFD\x18%\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\ + \uFFFD\uFFFD\uFFFD\x17\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\ + \0\0\0?\0\x04qEc{\x01\0\0\x13\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\ + 7\x19\0\0docProps/app.xmlPK\x05\x06\0\0\0\0\n\0\n\0\uFFFD\x02\0\0\uFFFD\x1A\ + \0\0\0\0" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Disposition: - attachment; filename="=?UTF-8?Q?test=5Fxlsx.xlsx?="; filename*=UTF-8''test_xlsx.xlsx Content-Length: - - '7543' + - '7542' Content-Type: - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet DATE: *id001 @@ -282,148 +607,18 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: !!binary | - UEsDBBQAAAAIAAAAPwBhXUk6TwEAAI8EAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbK2Uy27CMBBF - 9/2KyNsqMXRRVRWBRR/LFqn0A1x7Qiwc2/IMFP6+k/BQW1Gggk2sZO7cc8eOPBgtG5ctIKENvhT9 - oicy8DoY66eleJ8853ciQ1LeKBc8lGIFKEbDq8FkFQEzbvZYipoo3kuJuoZGYREieK5UITWK+DVN - ZVR6pqYgb3q9W6mDJ/CUU+shhoNHqNTcUfa05M/rIAkciuxhLWxZpVAxOqsVcV0uvPlFyTeEgjs7 - DdY24jULhNxLaCt/AzZ9r7wzyRrIxirRi2pYJU3Q4xQiStYXh132xAxVZTWwx7zhlgLaQAZMHtkS - ElnYZT7I1iHB/+HbPWq7TyQunURaOcCzR8WYQBmsAahxxdr0CJn4f4L1s382v7M5AvwMafYRwuzS - w7Zr0SjrT+B3YpTdcv7UP4Ps/I8dea0SmDdKfA1c/OS/e29zyO4+GX4BUEsDBBQAAAAIAAAAPwDy - n0na6QAAAEsCAAALAAAAX3JlbHMvLnJlbHOtksFOwzAMQO98ReT7mm5ICKGluyCk3SY0PsAkbhu1 - jaPEg+7viZBADI1pB45x7Odny+vNPI3qjVL2HAwsqxoUBcvOh87Ay/5pcQ8qCwaHIwcycKQMm+Zm - /UwjSqnJvY9ZFUjIBnqR+KB1tj1NmCuOFMpPy2lCKc/U6Yh2wI70qq7vdPrJgOaEqbbOQNq6Jaj9 - MdI1bG5bb+mR7WGiIGda/MooZEwdiYF51O+chlfmoSpQ0OddVte7/D2nnkjQoaC2nGgRU6lO4sta - v3Uc210J58+MS0K3/7kcmoWCI3dZCWP8MtInN9B8AFBLAwQUAAAACAAAAD8ARHVb8OgAAAC5AgAA - GgAAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzrZLBasMwEETv/Qqx91p2EkopkXMphVzb9AOE - tLZMbElot2n99xEJTR0IoQefxIzYmQe7683P0IsDJuqCV1AVJQj0JtjOtwo+d2+PzyCItbe6Dx4V - jEiwqR/W79hrzjPkukgih3hS4Jjji5RkHA6aihDR558mpEFzlqmVUZu9blEuyvJJpmkG1FeZYmsV - pK2tQOzGiP/JDk3TGXwN5mtAzzcq5HdIe3KInEN1apEVXCySp6cqcirI2zCLOWE4z+IfyEmezbsM - yzkZiMc+L/QCcdb36lez1jud0H5wytc2pZjavzDy6uLqI1BLAwQUAAAACAAAAD8ADJjQDFIHAAAg - IwAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbI3aS28btxYH8P39FIL2pXgefAW2gypC0S4K - FPfetmvFHttCLY0hTZL225d6JCXPIWtlEVgSR/PXEYc/kqOb939uX2afh/1hM+5u52DsfDbs7seH - ze7pdv7r/3/4Ls5nh2m9e1i/jLvhdv7XcJi/v/vPzZdx/8fheRimWX6D3eF2/jxNr+8Wi8P987Bd - H8z4OuzyK4/jfrue8sP90+Lwuh/WD6eDti8LtNYvtuvNbn5+h3f7a95jfHzc3A+r8f7TdthN5zfZ - Dy/rKcc/PG9eD/O7m4dNfu34eWb74fF2/j28W3GaL+5uTqf+bTN8ORR/z6b1x/8NL8P9NDzkAsxn - x0/2cRz/OL74U37KHg9dqGN/OKX6ZT97GB7Xn16m/45ffhw2T89TfhN3POR+fDmc/p9tN7vTO2/X - f97OMZ9h8zA952eCccESoJvP7j8dpnH7++WFy+HnA+lyIP9zoDeMLsTOkYvzmU8pV+tpfXezH7/M - 9qcIh9f18cuCd5wLdX988vvjs6fXcvJj+T7f2ZvF5+PbXFoszy2waAF1iw/nFlS0wLrFSregby0W - Od+3kNgMiafDuTicRchzC1e0cCLDh3MTf3rRQ4rGOZHy3CKcW/jgTHLtlNRMSSqlOMGSdEoSKc9N - 4vlDpkiGvEh5bpHOhzOzidxOyc2UrFKKEyz57ZRc1BIshmR8FDG5KCbYxGCwU03XzOlUziByure/ - c1dW0+dqqpiurKa11iTfTumbKb1KKU6w9G9X0xfVdIEBTBSX2MqXXTNQdAZDO2do5gwqZxI5w9s5 - Q1FNsBbQWHmhh6KcYKNPJnZyxmbOqHKCHI+iDipGgw+xKCjGhAbkRRSLehIkbxy0Y6ZmzKRjim9s - md7unamoJyElE2Q5U1FOcuTK0aCKCbY9ulsdVJxjeWnzr0kvbS4XvKfEBsTluLq0uVzxEYC7RYWO - RaDTkkwLV6SF8rLPQ30enlRaKC984kTdKwraKIFWCSRLcIVLUMKUoq8u7UvYUiZAmzsC9krbtgk0 - TiB1git4gtInh5BMkkMV1EAFNrZX2LZQoImS1+8SrkAKKqUiW+NZZi2VYs7Df/H11FnbSoFmSl4Y - S2hA5WTWUqoYLRtOMmtJVQqUpwYd+KFtFWisQGoFDa5U1sqrFNGo/lpx5fJo4WInapsr0F6BBAsa - YqmoJVmRfdATAAhVWQMY7l1abbJAm4VqDt1AS2Ut1WJnyQTVBUq2OGRdiyZ11rZboOFCCRdcIReU - dGHM8z+rstZ25V6SOt0V23ahtgulXXiFXVja5V2eXam6YklXQA4GO8MAtuVCLRdKufAKuRCq/prX - iIlk1hIuQLLB2E6Hxc5qSsOFaj3VgEvOsrCEi62z5VzvEraEiyNGw51FALbdQu0WSrew4Za8uLB0 - KwR2eQ0ts5ZuAYAj0+uwbbdQu4XSLWy4pbKWbkXIsxc5C1ph6Vbynk3oGIttt1C7JWcdS7xigYWl - W5TyAKvWq1i6ldervvw4dda2W6jdQukWXuEWlm5Fl4M4iQGWcOVVa57f9JDFtlyo5UIpF16x1sJq - sUWRDalRq1ps+SyX611cbblQy0VSLrxCLqzWW85FI+eEWMKFIS8NoAMXtuFCDRdJuLABlyprCRcc - d0+CGrNKuPJc2xvb6QLUhos0XCThogZccnylEi7KgMop0IpKt/Js3MROVanNFmm2SLJFDbZU0pIt - BEIT1a5VyRYy5+VWZ0pIbbVIq0VSLWqopTbYSrVy1GiS7AFULbecdd2tK+rsBGq1SO0FNtRSdaWq - rj4GveNCJVtkCaKJvcq23SLtlhzEl9RwS1pAlVsx5IFejq9U7wpydth3MKA2XKThIgkXXbHgohIu - yFmDHLOodEu0qJO22SLNFkm26Aq2yFcd1gXUey9UuZVSnjj2xqw2W6TZkt4sqcGW6gPVgitw1OMr - VQuuPNEqtxDqrG22SLPFki1qsKVGgmrBxd4ZuYm3otIt59GVpa+ztt0i7RZLt6jhlhoJKrfIuTyB - lZNCKuECxzZ70FnGcFsu1nLJafKSG3KJ0eIDV9uFUe0PcL1VaDo15bZarNWStVjyFYstLtUiJmeC - LCmXapFL0fhOX+W2Wty4dSXV4oZachDg6u4VW2PlzSsu0YqJupNBbpvF2iyWZnHDLFXVaocQMvRJ - ksXVDmFI1mDvFlbnHpYWi9VdrCvEYq5GAMxLvqTqWpLl8uwWunNXbpPFmiyWZHGDLHXTrdojJG+N - nGRxvUWYBwCM9uu/Xsdt68VaL5Z6cUMvVeJKL+eT11saXOkVCLk7keU2X6z5kvunS75i1cUlX/64 - vS3JXnHJV2DnSzXqrG2+WPPlJF/c4EtVtlp1ecflVOqStb7NRdC9f8Rtvljz5SRf3OBLDV8VX9Y7 - q/dfuOILAXx5P+ycdlH8rOF1/TT8vN4/bXaH2cvwmE9uTf5u9udfYZz+nsbX018528dxmsbt10fP - w/ph2B8f5aHocRynrw+OP6D49uOWu78BUEsDBBQAAAAIAAAAPwAI4sz5TAEAACkCAAAPAAAAeGwv - d29ya2Jvb2sueG1sjVHLTsMwELzzFdbeaR5KI1o1qcRLVELAobRHZOJNY9WxI9sh6d+zSZUCN067 - M94Z7axX675W7Autk0ZnEM1CYKgLI6Q+ZPC+fby+AeY814IrozGDEzpY51erztjjpzFHRnrtMqi8 - b5ZB4IoKa+5mpkFNL6WxNfcE7SFwjUUuXIXoaxXEYZgGNZcazg5L+x8PU5aywHtTtDVqfzaxqLin - 7V0lGwf5qpQKd+dAjDfNC69p7V4BU9z5ByE9igwSgqbDP4Rtm9tWqgHMwzkE+SXkm2UCS94qv6XV - Jnc6V5zEcTpMDlM7iZ37EQ2Q9XuphekyiBO67GlC0RxYN/Z7KXxFRBouLtwTykPlM1ikaTiYB7/c - x/tNlekxnKccH71yPX3VQG8oQkR5lpIauxHRaDIpC64KCjSUcTBO5tECWNkqdUfcq342fDQYRFOY - /BtQSwMEFAAAAAgAAAA/AL/Dgo4TAgAAMAYAABQAAAB4bC9zaGFyZWRTdHJpbmdzLnhtbH1UTW/b - MAy971cIvq/OBuwDQ5KiSNA169IUTbpiR8ZmY8KymIl00/TXT14vQ6gN8MXvUXokH6nx+XPn3RNG - IQ6T4t3ZqHAYKq4p7CbF/eby7efCiUKowXPASXFEKc6nb8Yi6tLRIJOiUd1/KUupGuxAzniPITGP - HDvQ9Bt3pewjQi0Nona+fD8afSw7oFC4ivugSXaUZPtAv3qcvSIfPhXTsdB0rNO1guK41Om4HIBX - cNaLcuc2pB7dHe5S9qch675zq0d3G6kyx1exxuguukHMLVFTzGnIhYctdJCBpbVopBcOGbiFICAm - e/CU+hPInJix5wg1WzwErJSqXk+pOXo4QDQ1zkmGutTxo0vX9t3Wyl0mNaoN/BWTazb6KukQnaKL - GhqT78J7Ckym8kWoCWyjFnww2HW2ddcYtK/a4yn+nXuS3NVLiEef5tfiIlA1vaCqUVlS1dAOzEwt - KdkgrFaFRIZvvzf9GSjuo8U5aCbfG9zG3Ijd4BNYp27w4K6g20tDdgIG8ltabTTdGpglPlNljBuY - nxxbg3PUxs0gcjLWpvGHnUObac2qIaOyan0aGrtdq4g7u8m3GIIc/RNkFuau4RrdQnIWr7n/T86v - bD7nDQ4+C5qWbvDZzuS9QnOK/aC0QZl8HyBZFXZqq3zA9KT+8xhJxUHIvnJDFbmrshYhWGJJ9SET - fx/awIe/9Mr05E9/A1BLAwQUAAAACAAAAD8AXZ86NN8CAACMDwAADQAAAHhsL3N0eWxlcy54bWzV - V1FvmzAQft+vsJzXLRDSZNkEVFulSJO2alK7aa8GG2LN2Mg4VdJfvzMQIBsk7dKlXfKAfXz33ec7 - 4wP/cpMJdMd0wZUM8GTsYsRkrCiXaYC/3S7fLDAqDJGUCCVZgLeswJfhK78wW8FuVowZBAyyCPDK - mPy94xTximWkGKucSbiTKJ0RA1OdOkWuGaGFdcqE47nu3MkIlzj05TpbZqZAsVpLE2CvMaHq8omC - tvkFRhXdlaIgZfR6NB6NsNOLnf2BHblj17Vop44W+omSbdALXBlCv7hHd0QAy8TCYyWURgZWBTyl - RZKMVYgrInikuTUmJONiW5k9aygTUeMyLpUuY1cR9uMsjoX5zjQlkvSGOcao0yjAy/r35LQL1/4f - TVtebAG4EPsFAEPo58QYpuUSJqge325zyIuEPVjRlLgj6FST7cSbPdyhUIJTqyK96l9kVN/gkrIN - g40Ge9KydxhPjLV07f+xscoL5DNSmsKzvMvoAu9MoS9YYsBd83Rlr0blNoYyRmUwoJykShJhA+w8 - HuCJymMgwGbF4594tzfI2qh6DzsV7uEBjjOWsDPKkHhwz/9HWg55nrtG/0ILJdBX6BExvRq6UMAc - 1PvkZXxmnfUATo6YCXFjmX4kzfExAb5N0mmrrm2qshnCmVMPK5pqYvm7bBV3l9b9K160SZoAQ96T - Ae9J641InovtUlULrGYfS2A7/yB4KjO2ywHZTdFKaX4Prraf2dpi++pkeGznUJNy7Zvk8fq8F6LP - a/V5XX3Tw/psL+pTe6BS04FMXLyQTAzpmz2nvvoV+PBemv+u8HqdRUwvy7fhTs1O110eWF3hMSCY - HtI+O6797UvV3p/36cl5H3pyzl2F6clVOMNKnLqRdLrVXq9qrMh+jAT42goWncVEay4Mlz19Cjjp - pm1R5V1DIvjE3YsCHJQlZC3MbXMzwO34C6N8nb1rUF/5nTI1qh1/tuuczEsF7Xd0+AtQSwMEFAAA - AAgAAAA/ABj6RlSwBQAAUhsAABMAAAB4bC90aGVtZS90aGVtZTEueG1s7VlNj9tEGL7zK0a+t44T - O82umq022aSF7bar3bSox4k9sacZe6yZyW5zQ+0RCQlREBckbhwQUKmVuJRfs1AERepf4PVHkvFm - ss22iwC1OSSe8fN+f/gd5+q1BzFDR0RIypO25VyuWYgkPg9oEratO4P+pZaFpMJJgBlPSNuaEmld - 2/rgKt5UEYkJAvJEbuK2FSmVbtq29GEby8s8JQncG3ERYwVLEdqBwMfANmZ2vVZr2jGmiYUSHAPX - 26MR9QkaZCytrRnzHoOvRMlsw2fi0M8l6hQ5Nhg72Y+cyi4T6AiztgVyAn48IA+UhRiWCm60rVr+ - seytq/aciKkVtBpdP/+UdCVBMK7ndCIczgmdvrtxZWfOv17wX8b1er1uz5nzywHY98FSZwnr9ltO - Z8ZTAxWXy7y7Na/mVvEa/8YSfqPT6XgbFXxjgXeX8K1a092uV/DuAu8t69/Z7nabFby3wDeX8P0r - G023is9BEaPJeAmdxXMemTlkxNkNI7wF8NYsARYoW8uugj5Rq3Itxve56AMgDy5WNEFqmpIR9gHX - xfFQUJwJwJsEa3eKLV8ubWWykPQFTVXb+ijFUBELyKvnP7x6/hS9ev7k5OGzk4c/nzx6dPLwJwPh - DZyEOuHL7z7/65tP0J9Pv335+EszXur433789NdfvjADlQ588dWT3589efH1Z398/9gA3xZ4qMMH - NCYS3SLH6IDHYJtBABmK81EMIkwrFDgCpAHYU1EFeGuKmQnXIVXn3RXQAEzA65P7FV0PIzFR1ADc - jeIKcI9z1uHCaM5uJks3Z5KEZuFiouMOMD4yye6eCm1vkkImUxPLbkQqau4ziDYOSUIUyu7xMSEG - snuUVvy6R33BJR8pdI+iDqZGlwzoUJmJbtAY4jI1KQihrvhm7y7qcGZiv0OOqkgoCMxMLAmruPE6 - nigcGzXGMdORN7GKTEoeToVfcbhUEOmQMI56AZHSRHNbTCvq7mLoRMaw77FpXEUKRccm5E3MuY7c - 4eNuhOPUqDNNIh37oRxDimK0z5VRCV6tkGwNccDJynDfpUSdr6zv0DAyJ0h2ZyLKrl3pvzFNzmrG - jEI3ft+MZ/BteDSZSuJ0C16F+x823h08SfYJ5Pr7vvu+776LfXdVLa/bbRcN1tbn4pxfvHJIHlHG - DtWUkZsyb80SlA76sJkvcqL5TJ5GcFmKq+BCgfNrJLj6mKroMMIpiHFyCaEsWYcSpVzCScBayTs/ - TlIwPt/zZmdAQGO1x4Niu6GfDeds8lUodUGNjMG6whpX3k6YUwDXlOZ4ZmnemdJszZtQDQhnB3+n - WS9EQ8ZgRoLM7wWDWVguPEQywgEpY+QYDXEaa7qt9XqvadI2Gm8nbZ0g6eLcFeK8C4hSbSlK9nI5 - sqS6QseglVf3LOTjtG2NYJKCyzgFfjJrQJiFSdvyVWnKa4v5tMHmtHRqKw2uiEiFVDtYRgVVfmv2 - 6iRZ6F/33MwPF2OAoRutp0Wj5fyLWtinQ0tGI+KrFTuLZXmPTxQRh1FwjIZsIg4w6O0W2RVQCc+M - +mwhoELdMvGqlV9WwelXNGV1YJZGuOxJLS32BTy/nuuQrzT17BW6v6EpjQs0xXt3TckyF8bWRpAf - qGAMEBhlOdq2uFARhy6URtTvCxgcclmgF4KyyFRCLHvfnOlKjhZ9q+BRNLkwUgc0RIJCp1ORIGRf - lXa+hplT15+vM0Zln5mrK9Pid0iOCBtk1dvM7LdQNOsmpSNy3Omg2abqGob9//Dk466YfM4eDxaC - 3PPMIq7W9LVHwcbbqXDOR23dbHHdW/tRm8LhA2Vf0Lip8Nlivh3wA4g+mk+UCBLxUqssv/nmEHRu - acZlrP7ZMWoRgtaKeF/k8Kk5u7HC2WeLe3NnewZfe2e72l4uUVs7yOSrpT+e+PA+yN6Bg9KEKVm8 - TXoAR83u7C8D4GMvSLf+BlBLAwQUAAAACAAAAD8AbpYr/SYBAABQAgAAEQAAAGRvY1Byb3BzL2Nv - cmUueG1snZLNTsMwEITvPEXke+IkhSpYSSoB6olKSARRcbPsbWoR/8g2pH173LRNWyknjuuZ/XZ2 - 5XKxk130C9YJrSqUJSmKQDHNhWor9NEs4wJFzlPFaacVVGgPDi3qu5IZwrSFN6sNWC/ARQGkHGGm - QlvvDcHYsS1I6pLgUEHcaCupD6VtsaHsm7aA8zSdYwmecuopPgBjMxLRCcnZiDQ/thsAnGHoQILy - DmdJhi9eD1a6yYZBuXJK4fcGJq1ncXTvnBiNfd8n/WywhvwZXq9e34dVY6EOp2KA6pIzwixQr21d - 4usiHK6jzq/CiTcC+NM+6BNvp0WOfcCjEIAc456Vz9nzS7NEdZ7m8zidxflDkz6SrCD3xddh5E3/ - BShPQ/5NPAOOuW8/Qf0HUEsDBBQAAAAIAAAAPwAEcUVjewEAABMDAAAQAAAAZG9jUHJvcHMvYXBw - LnhtbJ1SwU7jMBC98xWR79RptVqhyjFalV31sIhKLXBcGWfSWHVsyzNEKV+Pk6ohhT3h05s3T8/P - Mxa3XWOzFiIa7wo2n+UsA6d9ady+YI+7P9c3LENSrlTWOyjYEZDdyiuxiT5AJAOYJQeHBauJwpJz - 1DU0Cmep7VKn8rFRlMq4576qjIY7r18bcMQXef6TQ0fgSiivw2jITo7Llr5rWnrd58On3TEkPyl+ - hWCNVpQeKe+Njh59RdnvToMVfNoUyWgL+jUaOspc8GkptlpZWCVjWSmLIPgHIdag+pltlIkoRUvL - FjT5mKF5S1NbsOxFIfRxCtaqaJQjdpKdigHbgBTls48HrAEIBR/JAU61U2x+yPkgSOBSyMcgCV9G - 3BmygA/VRkX6T+L5NPGQgU0yEiD96yx2XyKeL/tkv/JNUC7NkI/or3EHfAw7f6cIzhO9JMW2VhHK - tIRx4iMh1ilatL1+VSu3h/Ks+dro9/90+uNyvpjl6QxrP3OCf3xn+Q5QSwECFAMUAAAACAAAAD8A - YV1JOk8BAACPBAAAEwAAAAAAAAAAAAAAgIEAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQIUAxQA - AAAIAAAAPwDyn0na6QAAAEsCAAALAAAAAAAAAAAAAACAgYABAABfcmVscy8ucmVsc1BLAQIUAxQA - AAAIAAAAPwBEdVvw6AAAALkCAAAaAAAAAAAAAAAAAACAgZICAAB4bC9fcmVscy93b3JrYm9vay54 - bWwucmVsc1BLAQIUAxQAAAAIAAAAPwAMmNAMUgcAACAjAAAYAAAAAAAAAAAAAACAgbIDAAB4bC93 - b3Jrc2hlZXRzL3NoZWV0MS54bWxQSwECFAMUAAAACAAAAD8ACOLM+UwBAAApAgAADwAAAAAAAAAA - AAAAgIE6CwAAeGwvd29ya2Jvb2sueG1sUEsBAhQDFAAAAAgAAAA/AL/Dgo4TAgAAMAYAABQAAAAA - AAAAAAAAAICBswwAAHhsL3NoYXJlZFN0cmluZ3MueG1sUEsBAhQDFAAAAAgAAAA/AF2fOjTfAgAA - jA8AAA0AAAAAAAAAAAAAAICB+A4AAHhsL3N0eWxlcy54bWxQSwECFAMUAAAACAAAAD8AGPpGVLAF - AABSGwAAEwAAAAAAAAAAAAAAgIECEgAAeGwvdGhlbWUvdGhlbWUxLnhtbFBLAQIUAxQAAAAIAAAA - PwBuliv9JgEAAFACAAARAAAAAAAAAAAAAACAgeMXAABkb2NQcm9wcy9jb3JlLnhtbFBLAQIUAxQA - AAAIAAAAPwAEcUVjewEAABMDAAAQAAAAAAAAAAAAAACAgTgZAABkb2NQcm9wcy9hcHAueG1sUEsF - BgAAAAAKAAoAgAIAAOEaAAAAAA== + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml index 0105c70c6..da564f443 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml @@ -1,9 +1,6 @@ # (C) 2026 GoodData Corporation -version: 1 interactions: - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL body: null headers: Accept: @@ -14,46 +11,13 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL response: - status: - code: 200 - message: OK - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive - Content-Encoding: - - br - Content-Type: - - application/json - DATE: &id001 - - PLACEHOLDER - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=63072000; includeSubDomains - Transfer-Encoding: - - chunked - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' body: string: data: attributes: - title: Customers Trend areRelationsValid: true content: buckets: @@ -97,9 +61,9 @@ interactions: identifier: id: date type: dataset - from: -11 + from: -12 granularity: GDC.time.month - to: 0 + to: -1 properties: controls: colorMapping: @@ -125,7 +89,8 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-03-25 09:18 + createdAt: 2026-04-01 14:36 + title: Customers Trend id: customers_trend meta: origin: @@ -136,12 +101,6 @@ interactions: data: id: admin type: userIdentifier - metrics: - data: - - id: amount_of_active_customers - type: metric - - id: revenue_per_customer - type: metric datasets: data: - id: date @@ -150,59 +109,95 @@ interactions: data: - id: date.month type: label + metrics: + data: + - id: amount_of_active_customers + type: metric + - id: revenue_per_customer + type: metric type: visualizationObject included: - attributes: {} id: admin links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/userIdentifiers/admin + self: http://localhost:3000/api/v1/entities/workspaces/demo/userIdentifiers/admin type: userIdentifier - attributes: - title: Date description: '' tags: - Date + title: Date type: DATE id: date links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/datasets/date + self: http://localhost:3000/api/v1/entities/workspaces/demo/datasets/date type: dataset - attributes: - title: '# of Active Customers' content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-03-25 09:18 + createdAt: 2026-04-01 14:36 + title: '# of Active Customers' id: amount_of_active_customers links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/amount_of_active_customers type: metric - attributes: - title: Revenue per Customer content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-03-25 09:18 + createdAt: 2026-04-01 14:36 + title: Revenue per Customer id: revenue_per_customer links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/metrics/revenue_per_customer + self: http://localhost:3000/api/v1/entities/workspaces/demo/metrics/revenue_per_customer type: metric - attributes: - title: Date - Month/Year description: Month and Year (12/2020) - tags: - - Date primary: true sourceColumn: '' + tags: + - Date + title: Date - Month/Year id: date.month links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/labels/date.month + self: http://localhost:3000/api/v1/entities/workspaces/demo/labels/date.month type: label links: - self: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL + self: http://localhost:3000/api/v1/entities/workspaces/demo/visualizationObjects/customers_trend?include=ALL + headers: + Cache-Control: + - no-cache, no-store, max-age=0, must-revalidate + Content-Encoding: + - br + Content-Length: + - '1052' + Content-Type: + - application/json + DATE: &id001 + - PLACEHOLDER + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Vary: + - Accept-Encoding + - Origin + - Access-Control-Request-Method + - Access-Control-Request-Headers + X-Content-Type-Options: + - nosniff + X-GDC-TRACE-ID: *id001 + X-Xss-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: - method: POST - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular body: fileName: Customers Trend format: XLSX @@ -218,15 +213,15 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: POST + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular response: - status: - code: 201 - message: Created + body: + string: + exportResult: 90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '59' Content-Type: @@ -239,22 +234,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: - exportResult: e9ca44328f74f4ee25d5518df98bb29c0e126865 + X-Xss-Protection: + - 1; mode=block + status: + code: 201 + message: Created - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/e9ca44328f74f4ee25d5518df98bb29c0e126865 body: null headers: Accept: @@ -266,15 +260,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -285,21 +278,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/e9ca44328f74f4ee25d5518df98bb29c0e126865 body: null headers: Accept: @@ -311,15 +304,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -330,21 +322,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/e9ca44328f74f4ee25d5518df98bb29c0e126865 body: null headers: Accept: @@ -356,15 +348,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -375,21 +366,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/e9ca44328f74f4ee25d5518df98bb29c0e126865 body: null headers: Accept: @@ -401,15 +392,14 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 response: - status: - code: 202 - message: Accepted + body: + string: '' headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate - Connection: - - keep-alive Content-Length: - '0' DATE: *id001 @@ -420,21 +410,21 @@ interactions: Referrer-Policy: - no-referrer Strict-Transport-Security: - - max-age=63072000; includeSubDomains + - max-age=31536000; includeSubDomains; preload Vary: + - Accept-Encoding - Origin - Access-Control-Request-Method - Access-Control-Request-Headers X-Content-Type-Options: - nosniff X-GDC-TRACE-ID: *id001 - X-XSS-Protection: - - '0' - body: - string: '' + X-Xss-Protection: + - 1; mode=block + status: + code: 202 + message: Accepted - request: - method: GET - uri: https://python-sdk-dex.dev-latest.stg11.panther.intgdc.com/api/v1/actions/workspaces/demo/export/tabular/e9ca44328f74f4ee25d5518df98bb29c0e126865 body: null headers: Accept: @@ -446,19 +436,284 @@ interactions: - 'true' X-Requested-With: - XMLHttpRequest + method: GET + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 response: - status: - code: 200 - message: OK + body: + string: "PK\x03\x04\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\ + \0[Content_Types].xml\uFFFD\uFFFD\uFFFDn\uFFFD0\x10E\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD*1tQU\x15\uFFFDE\x1F\uFFFD\x16\uFFFD\uFFFD\x03\\{B,\x1C\uFFFD\uFFFD\ + \f\x14\uFFFD\uFFFD\uFFFD\uFFFDP[Q\uFFFD\uFFFDM\uFFFDd\uFFFD\uFFFDs\u01CE\ + <\x18-\e\uFFFD- \uFFFD\r\uFFFD\x14\uFFFD\uFFFD'2\uFFFD:\x18\uB9E5x\uFFFD\ + <\uFFFDw\"CR\uFFFD(\x17<\uFFFDb\x05(F\xEB\uFFFDd\x15\x013n\uFFFDX\uFFFD\uFFFD\ + (\uFFFDK\uFFFD\uFFFD\uFFFDFa\x11\"x\uFFFDT!5\uFFFD\uFFFD5MeTz\uFFFD\uFFFD\ + \ oz\uFFFD[\uFFFD\uFFFD'\uFFFDS\uFFFD!\uFFFD\uFFFDG\uFFFD\uFFFD\uFFFDQ\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD \t\x1C\uFFFD\uFFFDa-lY\uFFFDP1:\uFFFD\x15q].\uFFFD\ + \uFFFDE\uFFFD7\uFFFD\uFFFD;;\r\uFFFD6\uFFFD5\v\uFFFD\uFFFDKh+\x7F\x036}\uFFFD\ + \uFFFD3\uFFFD\x1A\uFFFD\uFFFD*\u044BjX%M\uFFFD\uFFFD\x14\"J\uFFFD\x17\uFFFD\ + ]\uFFFD\uFFFD\fUe5\uFFFD\u01FC\uFFFD\x02\uFFFD@\x06L\x1E\uFFFD\x12\x12Y\uFFFD\ + e>\uFFFD\uFFFD!\uFFFD\uFFFD\uFFFD\uFFFD=j\uFFFDO$.\uFFFDDZ9\uFFFD\uFFFD\ + G\u0158@\x19\uFFFD\x01\uFFFDq\uFFFD\uFFFD\uFFFD\b\uFFFD\uFFFD\x7F\uFFFD\uFFFD\ + \uFFFD\x7F6\uFFFD\uFFFD9\x02\uFFFD\fi\uFFFD\x11\uFFFD\uFFFD\uFFFD\xF6k\uFFFD\ + (\uFFFDO\uFFFDwb\uFFFD\uFFFDr\uFFFD\uFFFD?\uFFFD\uFFFD\uFFFD\uFFFD\x1Dy\uFFFD\ + \x12\uFFFD7J|\r\\\uFFFD\uFFFD{os\uFFFD\uFFFD>\x19~\x01PK\x03\x04\x14\0\0\ + \0\b\0\0\0?\0\uFFFDI\uFFFD\uFFFD\0\0\0K\x02\0\0\v\0\0\0_rels/.rels\uFFFD\ + \uFFFD\uFFFDN\uFFFD0\f@\uFFFD|E\uFFFD\uFFFD\uFFFDnH\b\uFFFD\uFFFD\uFFFD\ + \ \uFFFD\uFFFD&4>\uFFFD$n\e\uFFFD\uFFFD\uFFFD\u0103\uFFFD\uF250@\f\uFFFD\ + i\a\uFFFDq\uFFFD\uFFFDg\uFFFD\uFFFD\uFFFD<\uFFFD\uFFFDR\uFFFD\x1C\f,\uFFFD\ + \x1A\x14\x05\uFFFD\u0387\uFFFD\uFFFD\uFFFD\uFFFDiq\x0F*\v\x06\uFFFD#\a2p\uFFFD\ + \f\uFFFD\uFFFDf\uFFFDL#J\uFFFD\u027D\uFFFDY\x15H\uFFFD\x06z\uFFFD\uFFFD\uFFFD\ + u\uFFFD=M\uFFFD+\uFFFD\x14\uFFFDO\uFFFDiB)\uFFFD\uFFFD\uFFFDv\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFDt\uFFFD\u0240\u6129\uFFFD\uFFFD@\u06BA%\uFFFD\uFFFD\ + 1\uFFFD5ln[o\uFFFD\uFFFDa\uFFFD gZ\uFFFD\uFFFD(dL\x1D\uFFFD\uFFFDy\uFFFD\ + \uF706W\uFFFD*P\uFFFD\uFFFD]V\u05FB\uFFFD=\uFFFD\uFFFDH\u0421\uFFFD\uFFFD\ + \uFFFDh\x11S\uFFFDN\uFFFD\uFFFDZ\uFFFDu\x1C\uFFFD]\t\uFFFD\u03CCKB\uFFFD\ + \uFFFD\uFFFD\x1C\uFFFD\uFFFD\uFFFD#wY\tc\uFFFD2\uFFFD'7\uFFFD|\0PK\x03\x04\ + \x14\0\0\0\b\0\0\0?\0Du[\uFFFD\uFFFD\0\0\0\uFFFD\x02\0\0\x1A\0\0\0xl/_rels/workbook.xml.rels\uFFFD\ + \uFFFD\uFFFDj\uFFFD0\x10D\uFFFD\uFFFD\n\uFFFD\uFFFDZv\x12J)\uFFFDs)\uFFFD\ + \\\uFFFD\uFFFD\x03\uFFFD\uFFFD\uFFFDLlIh\uFFFDi\uFFFD\uFFFD\x11\tM\x1D\b\ + \uFFFD\a\uFFFD\u010C\u0619\a\uFFFD\uFFFD\uFFFD\uFFFD\u040B\x03&\uFFFDWP\x15\ + %\b\uFFFD&\uFFFD\u03B7\n>wo\uFFFD\uFFFD \uFFFD\uFFFD\uFFFD\uFFFD\x0F\x1E\ + \x15\uFFFDH\uFFFD\uFFFD\x1F\uFFFD\uFFFD\uFFFDk\uFFFD3\uFFFDH\"\uFFFDxR\uFFFD\ + \uFFFD\u32D4d\x1C\x0E\uFFFD\uFFFD\x10\uFFFD\uFFFD&\uFFFDAs\uFFFD\uFFFD\uFFFD\ + Q\uFFFD\uFFFDnQ.\uFFFD\uFFFDI\uFFFDi\x06\uFFFDW\uFFFDbk\x15\uFFFD\uFFFD\uFFFD\ + @\uFFFD\u0188\uFFFD\uFFFD\x0EM\uFFFD\x19|\r\uFFFDk@\uFFFD7*\uFFFDwH{r\uFFFD\ + \uFFFDCuj\uFFFD\x15\\,\uFFFD\uFFFD\uFFFD*r*\uFFFD\uFFFD0\uFFFD9a8\uFFFD\uFFFD\ + \x1F\uFFFDI\uFFFD\u037B\f\uFFFD9\x19\uFFFD\uFFFD>/\uFFFD\x02q\uFFFD\uFFFD\ + \uFFFDW\uFFFD\uFFFD;\uFFFD\uFFFD~p\uFFFD\uFFFD6\uFFFD\uFFFD\u06BF0\uFFFD\ + \uFFFD\uFFFD\uFFFD#PK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFDo\uFFFD\x1A\uFFFD\ + \x02\0\0\uFFFD\a\0\0\x18\0\0\0xl/worksheets/sheet1.xml\uFFFD\uFFFD\uFFFD\ + n\uFFFD0\x14\uFFFD\uFFFD\uFFFD)\x10\uFFFDc\uFFFD\uFFFDDI\uFFFD\uFFFDi\uFFFD\ + .\uFFFDF\uFFFD^\uFFFD\uFFFDIP\x01G\uFFFD6\uFFFD\uFFFD\x1F\x03I\uFFFDO\x17\ + M\"!\uFFFD\uFFFD\uFFFD\uFFFD=>y.\uFFFD\uFFFD\uFFFD\uFFFDMn\uFFFDIL\x10\uFFFD\ + #S-\uFFFD*\uFFFD6\uFFFD\uFFFD\uFFFD\uFFFD\u02EF:\uFFFD\x1A\uFFFDU\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD\x7FM\x13\uFFFDL\uFFFD\uFFFD\uFFFD\uFFFD~h\uFFFD\ + \u01B8\uFFFD\a\uFFFD\uFFFDI\uFFFDun7J\uFFFDf\uFFFD5e\uFFFD \uFFFD3\uFFFD\ + 'k[\uFFFD\uFFFD\uFFFD\uFFFDz\uFFFD4\uFFFD\uFFFDd\uFFFD\u03A9,\x12\uFFFD\uFFFD\ + L\uFFFD,\uFFFD\uFFFD>\xA8\uFFFD\uFFFD\x18v\uFFFD\u0397ff\uFFFD\uFFFD\uFFFD\ + \uFFFD\\\x1F\uFFFD6E\uFFFD|\uFFFD\uFFFD6\uFFFD5\uFFFDt\uFFFD\uFFFD=k\uFFFD\ + \uFFFDj\uFFFD\uFFFD\u0127d\uFFFD`q2\x1Dw\uFFFD\x7F\uFFFDf\uFFFD\f\u0191\uFFFD\ + \uFFFD\x7F\uFFFD\uFFFD,\uFFFDY\uFFFD\uFFFD\uFFFDm\uFFFD\uFFFD\u0687\x16\ + ^\uFFFDW\uFFFDuM\uFFFD\uFFFD^vE}\uFFFD\uFFFD\uFFFDYg\uFFFD\uFFFD\uFFFDn\uFFFD\ + s\uFFFDo\uFFFD\uFFFD\a\x11\uFFFD\uFFFD\uFFFD\x16M\uFFFD\uFFFD\u02BC\uFFFD\ + \"\uFFFD\uFFFDs\uFFFD!_\uFFFD\uFFFD\x1F)$\x14f\uFFFD\uFFFD8Z>6\u0396\x7F\ + \x0E\uFFFD\uFFFD\uFFFD;\u04A3#{\uFFFD\uFFFD\uFFFDS\uFFFD\uFFFD\a\uFFFDI\uFFFD\ + \uFFFD+s\uFFFD\uFFFDl:\uFFFD\uFFFD>\uFFFD\uFFFD\uFFFD\uFFFD.k\uFFFD\"#\x1F\ + \uFFFD'i\u07DE\uFFFD\uFFFD;\uFFFDko\uFFFD\uFFFDi\uFFFD\uFFFD\uFFFDS\e\uFFFD\ + `q\uFFFD[\u040Eq\uFFFD\uFFFD\x0E\uFFFD9\uFFFD\n\uFFFDY\uFFFD5NC~\x018\x03\ + \uFFFD\x12p\x05\uFFFD\ny\uFFFDI\uFFFD\uFFFD3\uFFFD\uFFFD\x01\uFFFD4\uFFFD\ + 7\uFFFD\uFFFD\uFFFD\uFFFD\x06\\b\uFFFDB~\a\uFFFD\uFFFD!_\0\uFFFD_\uFFFD\ + '^\uFFFD\x17\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u039B\r\uFFFD\x03\uFFFD\uFFFD\ + \uFFFD\x16\uFFFDc\x12,\uFFFD\uFFFD\x10\n\uFFFD9\uFFFD\uFFFD\uFFFD\"\uFFFD\ + \x14@\uFFFD!\uFFFD\x12\b\x16@\uFFFD\uFFFD|\b\x15X\uFFFD\uFFFD '\b{3\uFFFD\ + )\uFFFD\uFFFD\uFFFD\uFFFDV\uFFFD\x02\b\uFFFD\uFFFD\uFFFDx_\e\uFFFD\uFFFD\ + 6\uFFFD6\uFFFD\uFFFD\uFFFD\uFFFDB\uFFFD\uFFFD\x11\uFFFDR\uFFFD\uFFFD\uFFFD\ + \x0F\uFFFD\uFFFD|hK9A)\u054A2\uFFFD\uFFFDi \uFFFD\uFFFD\uFFFD\x05\uFFFD\n\ + \uFFFD\uFFFD0.S\uFFFD\uFFFD\x12P\u52E1mJ\uFFFD\u07E0$}\uFFFD\x01]\uFFFD\uFFFD\ + \uFFFD I\uFFFD\u051C\x12,\uFFFD\x045\\\x05\uFFFD\uFFFD#\uFFFD\uFFFDb\uFFFD\ + (E\uFFFD\0\uFFFD0\x0F\uFFFDA+\uFFFD\uFFFDG\x1A\x18H\uFFFDH\uFFFDQ?7\uFFFD\ + \uFFFD\u0488I\uFFFD\uFFFD\uFFFD\x01\uFFFD\uFFFDm\uFFFDW\uFFFD\uFFFD)\uFFFD\ + \uFFFD.0\uFFFD\x12I\uFFFD\uFFFD2\uFFFD\uFFFDD\x1DT$Hk\uFFFD)STk\uFFFD$\uFFFD\ + 1\uFFFD\uFFFDd\uFFFDe\e\uFFFD\uFFFD\uFFFDM^5Qa\uFFFD~\uFFFD`\uFFFD\uFFFD\ + \uFFFDo\uFFFDn\uFFFD\uFFFD\e\uFFFD\uFFFD\uFFFD\uFFFD:\x7F\uFFFD\x1Fg[\x7F\ + \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDkk\uFFFDq\uFFFD\uFFFD\x01/\uFFFD\uFFFD\ + \uFFFD\x1FPK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFDm\uFFFD\uFFFDO\x01\0\0/\x02\ + \0\0\x0F\0\0\0xl/workbook.xml\uFFFDQ\uFFFDN\uFFFD0\x10\uFFFD\uFFFD\x15\uFFFD\ + \uFFFD4\x0F%\x11\uFFFD\uFFFDT\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDCi\uFFFD&\uFFFD\ + 4V\uFFFD\uFFFDl\uFFFD\uFFFD\x7F\uFFFD:U\n\uFFFD8ygvw4\uFFFD^\uFFFDNJ\uFFFD\ + /\uFFFDN\x18]\uFFFDd\x16S\x02\uFFFD6\\\uFFFDCI?\uFFFDO\uFFFDw\uFFFD8\uFFFD\ + 4g\uFFFDh(\uFFFD\x19\x1C]U7\uFFFD\uFFFD\uFFFD\uFFFD1G\uFFFD\uFFFD\u0695\uFFFD\ + \uFFFD\uFFFD[D\uFFFD\uFFFD[P\uFFFD\uFFFDL\a\x1A;\uFFFD\uFFFD\uFFFDy\uFFFD\ + \uFFFD\x10\uFFFD\uFFFD\x02\uFFFD\x05\uFFFDJFi\x1C\x17\uFFFDbB\u04CB\uFFFD\ + \uFFFD\uFFFDG\uFFFD4\uFFFD\uFFFD\uFFFD\uFFFD\u053D\x02\uFFFD/\"\x16$\uFFFD\ + \uFFFD\u07B5\uFFFDs\uFFFDZ6B\uFFFD\uFFFD\x12\uFFFD\uFFFD\uFFFD{e\nm\uFFFD\ + $%\uFFFD9\uFFFD\u0205\a^\uFFFD\f\uFFFD\x19\uFFFD\x0Fa\uFFFD\uFFFD\x172\uFFFD\ + <\uFFFDiT]C\uFFFD[\xA1a\uFFFD\uFFFD[\uFFFD6\uFFFD\uFFFD\uFFFD,M\uFFFD0\x19\ + \uFFFDv\x02\x06\uFFFD\uFFFD\x14 9\uFFFD\uFFFDf(i\uFFFD\uFFFDe\uFFFD\x13\ + JrJ\uFFFD\uFFFD\uFFFD\v\uFFFD[$\uFFFDx~\uFFFDA\x1CZ_\uFFFDyQ\uFFFDA<\uFFFD\ + \uFFFD>\uFFFDoz\uFFFD\x1E\xED{\uFFFDBSdkAs\uFFFD\uFFFD\uFFFD\uFFFD`\uFFFD\ + \x04S-\x04\x16v\xD3Qj\u06AF\uFFFD\uFFFD1Vx\uFFFD\uFFFD4\u02D39%M/\uFFFD\x1A\ + \uFFFD7\uFFFDb\uFFFD(\x10\uFFFD\uFFFDH\uFFFD7PK\x03\x04\x14\0\0\0\b\0\0\0\ + ?\0\uFFFD\u0102#\uFFFD\0\0\0\x04\x01\0\0\x14\0\0\0xl/sharedStrings.xml]\uFFFD\ + 1K\x041\x10F{\x7F\uFFFD0\uFFFD\u076C\n\"\uFFFD\uFFFD\x13;\e\uFFFD\uFFFD\ + 2\uC3B7\uFFFD\uFFFDd\uFFFDL\x16\uFFFD\uFFFDFD\x05\uFFFD\uFFFD{_\uFFFD\uFFFD\ + {^`\u3AA9\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD2\uFFFD)\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\x1AA-\uFFFD\x14\uFFFD\"\uFFFD\uFFFD\x15\x0F\uFFFD\u0329\ + \x1A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDl\uFFFD!\uFFFDq\uFFFD\x1Cu_V\uFFFDn^K\uFFFD\ + \uFFFD:\uFFFD\x13\uFFFDZ9N:3[^\uFFFDb\x18\uFFFD(\uFFFD$\bcib\x1E/\x11\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD\x1F\x0ENSp\x16\uFFFD1\uFFFD\u0848\uFFFD\uFFFD\xB1\ + :\uFFFD\uFFFD\uFFFDK~\a\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDJ\uFFFD\ + 7\uFFFD\uFFFDG\uFFFDX\x1A\uFFFD\uFFFD\uFFFD7\uFFFDk\uFFFD\uFFFD\b\uFFFD\ + PK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFDf\uFFFDI\uFFFD\x02\0\0\uFFFD\r\0\0\r\ + \0\0\0xl/styles.xml\uFFFDW]o\uFFFD0\x14}\uFFFDWX\x1E\uFFFD\t\uFFFD~\uFFFD\ + U\uFFFD\uFFFD\x13L\uFFFD\uFFFD\x04\x13\uFFFD\x06\uFFFD\u054D\uFFFD\uFFFD\ + \uFFFD\x1F\uFFFDq\uFFFDv\uFFFD\uFFFDk;m\u0491\uFFFD[7m\uFFFD\x0F\uFFFDo\uFFFD\ + =\uFFFD\uFFFD^\uFFFD&\uFFFD\uFFFD/\uFFFD@7\u0314\\\uFFFD\x18\uFFFDO{\x18\ + 1\uFFFDj\uFFFDU\x1E\uFFFD\x1F\uFFFD\u027B\tF\uFFFD%\uFFFD\x12\uFFFD\x15\uFFFD\ + \uFFFD\uFFFD|\uFFFDjZ\u0695`W\v\uFFFD,\x02\x06U\uFFFDxam\uFFFD!\uFFFD\uFFFD\ + t\uFFFD$)Ou\uFFFD\x14\\\u0274\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDQY\x18Fh\u9724\ + \uFFFD\x06\uFFFD\uFFFD8\uFFFD\uFFFD+<\uFFFD\uFFFDJ&\u0496(\u0555\uFFFD1\x1E\ + nL(\f_(h\e\uFFFDa\x14\uFFFD.4\x05)RJ\uFFFD\uFFFD\x1F\uFFFD:\u0463m\uFFFD\ + \uFFFD\u06D3\uFFFD\uFFFD\x0E\uFFFDx\e\uFFFD\uFFFDO\uFFFD\uFFFD\uFFFD\uFFFD\ + a\uFFFD~\uFFFD\uFFFD3\uFFFDe\u03A6\uFFFDV\uFFFD\uFFFD3\x1C\f\uFFFDiy\uFFFD\ + n\uFFFD\0\u01BE\uFFFD\uFFFDZh\uFFFD,\uFFFD\x038\uFFFDE\x11\uFFFD\x02\uFFFD\ + \b>7\uFFFD\x193\"\uFFFDX\x05\uFFFD\uFFFD\x19|\x06k\uFFFD\uFFFDJ\e\x1F;D\u060E\ + 39\x14\uFFFD'3\uFFFD(\uFFFD\x19\uFFFD\x10\uFFFD\uFFFD\uFFFD1N\uFFFDI\uFFFD\ + \uFFFD\uFFFD\uFFFD6\uFFFD\x1EL\uFFFD\aW\0.\uFFFDv\x01\uFFFD0\uFFFD\x16\uFFFD\ + ZfT\x02\vT\u03EFW\x05\uFFFDE\uFFFD\uFFFD\r4\x1Ew\0\uFFFD\e\uFFFD\uFFFD\x0F\ + F\uFFFDw(\uFFFD\uFFFD\u0529\uFFFD/\uFFFDs7\uFFFD/pE\u0652\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD[\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD\0\uFFFD\uFFFDkC\uFFFD\t\uFFFD3:\uFFFDk\uFFFDl*Xf\uFFFD\uFFFD\uFFFD\ + |\uFFFDF\uFFFD\v\x17C[\uFFFD%L('\uFFFDVD\uFFFD\0k\uFFFD.O\uFFFD\eF\uFFFD\ + \uD0A7\uFFFD\uFFFD\uFFFD0\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDF\x1E\uFFFD\uFFFD\ + \x7F\uFFFD)\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0393~\x7F-\uFFFD\uFFFD>B\uFFFD\ + Q\uFFFD\u0677\uFFFDc\uFFFDP\x02M\uFFFD\x1E\x10\u04E9\uFFFD\r\x05\uFFFD^\uFFFD\ + O^\uFFFD\x17\uFFFDYO\uFFFDnJ\uFFFD\x10W\uFFFD\uFFFDW\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFDZ\uFFFD\uFFFD\uFFFD{\uFFFD\uFFFD\x14\uFFFD\uFFFDz\x1A\ + h\uFFFD\uFFFD\uFFFD\uFFFD\x02w\uFFFDvr\x14-Zf\e\uFFFD]\uFFFD\uFFFD\x1D\uFFFD\ + \uFFFD\uFFFD\e\uFFFD\uFFFD\x10\uFFFDD\uFFFD\uFFFD\uFFFD\uFFFDg\x0Fl\u059F\ + \x04\u03D5d\uFFFD\x14\uFFFD\uFFFD\x12-\uFFFD\uFFFD\uFFFD\uFFFDZ\uFFFD+-v\uFFFD\ + !\uFFFD\uFFFDn\r%\uFFFD[_fw\uFFFD\uFFFD/\x01A\uFFFD`\uFFFD\uFFFD\uFFFD]\uFFFD\ + \uFFFD\uFFFD\uFFFD3\uFFFD\uFFFDG|\uFFFD\uFFFD9u\uFFFD\uFFFD:lT\x0F\u06AA\ + \uFFFD\uFFFD\uFFFD\uFFFD\uFFFDv\uFFFD\u06BB\x15\uFFFD_|\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFD2\uFFFD\uFFFD\uFFFDv\uFFFDR@0\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + >\uFFFD_\uFFFD\uFFFD;\uFFFD\x0F\x1F\uFFFD\uFFFD]\uFFFD\x7F\u045D\x1CU\uFFFD\ + g\uFFFDIT\uFFFD\uFFFDV\x13\uFFFDj\uFFFD\e+r\uFFFD1\uFFFDt\uFFFDEk3\uFFFD\ + \v\uFFFDUG\uFFFD\x05N\uFFFDl:\uFFFD\uFFFDj\uFFFD\x1C>\uFFFD\uFFFD\uFFFD\0\ + \ae\x19\uFFFD\uFFFD\uFFFD\uFFFD\\\uFFFDq3\uFFFD\uFFFD(\uFFFD\uFFFD\uFFFD\ + \r\uFFFD;\uFFFD\u0476F5\uFFFDn\uFFFD\uFFFD\uFFFDW\uFFFD|k\uFFFD\uFFFD\x02\ + PK\x03\x04\x14\0\0\0\b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\ + \0xl/theme/theme1.xml\uFFFDYM\uFFFD\uFFFDD\x18\uFFFD\uFFFD+F\uFFFD\uFFFD\ + \uFFFD\x13;\u036E\uFFFD\uFFFD6\u0664\uFFFD\uFFFD\uFFFD\uFFFD\u0774\uFFFD\ + \u01C9=\uFFFD\uFFFD\x19{\uFFFD\uFFFD\uFFFDnsC\uFFFD\x11\t\tQ\x10\x17$n\x1C\ + \x10P\uFFFD\uFFFD\uFFFD\uFFFD_\uFFFDP\x04E\uFFFD_\uFFFD\uFFFDG\uFFFD\uFFFD\ + f\uFFFD\u0376\uFFFD\0\uFFFD9$\uFFFD\uFFFD\uFFFD~\x7F\uFFFD\x1D\uFFFD\uFFFD\ + \a1CGDH\u0293\uFFFD\uFFFD\\\uFFFDY\uFFFD$>\x0Fh\x12\uFFFD\uFFFD;\uFFFD\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD\uFFFDI\uFFFD\x19OH\u06DA\x12i]\uFFFD\uFFFD\uFFFD\ + *\uFFFDT\x11\uFFFD\t\x02\uFFFDDn\uFFFD\x15)\uFFFDn\u06B6\uFFFDa\e\uFFFD\uFFFD\ + <%\t\uFFFD\eq\x11c\x05K\x11\u0681\uFFFD\uFFFD\uFFFD6fv\uFFFDVk\uFFFD1\uFFFD\ + \uFFFD\uFFFD\x12\x1C\x03\uFFFD\u06E3\x11\uFFFD\t\x1Ad,\uFFFD\uFFFD\x19\uFFFD\ + \x1E\uFFFD\uFFFDD\uFFFDl\uFFFDg\uFFFD\uFFFD\uFFFD%\uFFFD\x1496\x18;\u064F\ + \uFFFD\uFFFD.\x13\uFFFD\b\uFFFD\uFFFD\x05r\x02~< \x0F\uFFFD\uFFFD\x18\uFFFD\ + \nn\uFFFD\uFFFDZ\uFFFD\uFFFD\uCB6B\uFFFD\uFFFD\uFFFD\uFFFD\x15\uFFFD\x1A\ + ]?\uFFFD\uFFFDt%A0\uFFFD\uFFFDt\"\x1C\uFFFD\t\uFFFD\uFFFD\uFFFDqeg\u03BF\ + ^\uFFFD_\uFFFD\uFFFDz\uFFFDn\u03D9\uFFFD\uFFFD\x01\uFFFD\uFFFD\uFFFDRg\t\ + \uFFFD\uFFFD[Ng\uFFFDS\x03\x15\uFFFD\u02FC\uFFFD5\uFFFD\uFFFDV\uFFFD\x1A\ + \uFFFD\uFFFD\x12~\uFFFD\uFFFD\uFFFDx\e\x15|c\uFFFDw\uFFFD\uFFFDZ\uFFFD\u076E\ + W\uFFFD\uFFFD\x02\uFFFD-\uFFFD\uFFFD\uFFFD\uFFFDv\uFFFD\x15\uFFFD\uFFFD\uFFFD\ + 7\uFFFD\uFFFD\uFFFD+\eM\uFFFD\uFFFD\uFFFDA\x11\uFFFD\uFFFDx\t\uFFFD\uFFFD\ + s\x1E\uFFFD9d\uFFFD\uFFFD\r#\uFFFD\x05\uFFFD\uFFFD,\x01\x16([\u02EE\uFFFD\ + >Q\uFFFDr-\uFFFD\uFFFD\uFFFD\uFFFD\x03 \x0F.V4Aj\uFFFD\uFFFD\x11\uFFFD\x01\ + \uFFFD\uFFFD\uFFFDPP\uFFFD\t\uFFFD\uFFFD\x04kw\uFFFD-_.me\uFFFD\uFFFD\uFFFD\ + \x05MU\uFFFD\uFFFD(\uFFFDP\x11\v\u022B\uFFFD?\uFFFDz\uFFFD\x14\uFFFDz\uFFFD\ + \uFFFD\uFFFD\u1CD3\uFFFD?\uFFFD\uFFFD\uFFFDO\u041FO\uFFFD}\uFFFD\uFFFDK3^\uFFFD\uFFFD\ + \uFFFD~\uFFFD\uFFFD\uFFFD_\uFFFD0\x03\uFFFD\x0E|\uFFFD\u0553\u07DF=y\uFFFD\ + \uFFFDg\x7F|\uFFFD\uFFFD\0\uFFFD\x16x\uFFFD\uFFFD\a4&\x12\uFFFD\"\uFFFD\uFFFD\ + \uFFFD`\uFFFDA\0\x19\uFFFD\uFFFDQ\f\"L+\x148\x02\uFFFD\x01\uFFFDSQ\x05xk\uFFFD\ + \uFFFD\t\uFFFD!U\uFFFD\uFFFD\x15\uFFFD\0L\uFFFD\uFFFD\uFFFD\x15]\x0F#1Q\uFFFD\ + \0\u070D\uFFFD\np\uFFFDs\uFFFD\uFFFD\uFFFDh\uFFFDn&K7g\uFFFD\uFFFDf\uFFFD\ + b\uFFFD\uFFFD\x0E0>2\uFFFD\uFFFD\nmo\uFFFDB&S\x13\uFFFDnD*j\uFFFD3\uFFFD\ + 6\x0EIB\x14\uFFFD\uFFFD\uFFFD1!\x06\uFFFD{\uFFFDV\uFFFD\uFFFDG}\uFFFD%\x1F\ + )t\uFFFD\uFFFD\x0E\uFFFDF\uFFFD\f\uFFFDP\uFFFD\uFFFDn\uFFFD\x18\uFFFD25)\b\ + \uFFFD\uFFFD\uFFFDf\uFFFD.\uFFFDpfb\uFFFDC\uFFFD\uFFFDH(\b\uFFFDL,\t\uFFFD\ + \uFFFD\uFFFD:\uFFFD(\x1C\e5\uFFFD1\u04D17\uFFFD\uFFFDLJ\x1EN\uFFFD_q\uFFFD\ + T\x10\uFFFD0\uFFFDz\x01\uFFFD\uFFFDDs[L+\uFFFD\uFFFDb\uFFFDD\u01B0\uFFFD\ + i\\E\nE\uFFFD&\uFFFDM\u0339\uFFFD\uFFFD\uFFFD\uFFFDn\uFFFD\uFFFD\u05283M\"\ + \x1D\uFFFD\uFFFD\x1CC\uFFFDb\uFFFD\u03D5Q\t^\uFFFD\uFFFDl\rq\uFFFD\uFFFD\ + \uFFFDp\u07E5D\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD02'Hvg\"\u02AE]\uFFFD1M\uFFFD\ + j\u018CB7~\u07CCg\uFFFDmx4\uFFFDJ\uFFFDt\v^\uFFFD\uFFFD\x1F6\uFFFD\x1D\uFFFD\uFFFDfg@@c\uFFFD\u01C3b\uFFFD\uFFFD\ + \uFFFD\r\uFFFDl\uFFFDU(uA\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x1AW\uFFFDN\uFFFD\ + S\0\u05D4\uFFFDxfi\u0799\uFFFDl\u035BP\r\bg\a\x7F\uFFFDY/DC\uFFFD`F\uFFFD\ + \uFFFD\uFFFD\x05\uFFFDYX.\uFFFDO\uFFFD\b\x12\uFFFDR\uFFFD\ + ,\uFFFD\uFFFD\uFFFD\x10tni\uFFFDe\uFFFD\uFFFD\uFFFD1j\x11\uFFFD\u058Ax_\uFFFD\ + \uFFFD9\uFFFD\uFFFD\uFFFD\uFFFDg\uFFFD{sg{\x06_{g\uFFFD\uFFFD^.Q[;\uFFFD\ + \u4AE5?\uFFFD\uFFFD\uFFFD>\uFFFD\u0781\uFFFD\u0484)Y\uFFFDMz\0G\uFFFD\uFFFD\ + \uFFFD/\x03\uFFFDc/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFD\ + \uFFFDs\uFFFD%\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFD\ + j\uFFFD0\x10\uFFFD\uFFFD}\n\uFFFD\uFFFD-\uFFFD\tI\x11\uFFFD\x03m\u0269\uFFFD\ + BSZr\x13\uFFFD\uFFFD\x11\uFFFD~\uFFFD\uFFFD:y\uFFFD\u028E\uFFFD$\uFFFDS\uFFFD\ + \uFFFD\uFFFD\uFFFDvvQ\uFFFD:\uFFFD&\uFFFD\x05\uFFFDV%\u0292\x14E\uFFFD\uFFFD\ + \uFFFDB\uFFFD%\uFFFD\u062E\uFFFDG\x149O\x15\uFFFD\uFFFDVP\uFFFD\x138\uFFFD\ + \uFFFD\x1E\nf\b\uFFFD\x16\u07AC6`\uFFFD\0\x17\x05\uFFFDr\uFFFD\uFFFD\x12\ + \x1D\uFFFD7\x04c\uFFFD\x0E \uFFFDK\uFFFDC\x05q\uFFFD\uFFFD\uFFFD>\uFFFD\uFFFD\ + \u0186\uFFFDoZ\x03\uFFFD\uFFFDt\uFFFD%x\u02A9\uFFFD\uFFFD\x03\uFFFDf$\uFFFD\ + \x01\uFFFD\u06484?\uFFFD\uFFFD\x01\uFFFDah@\uFFFD\uFFFD\x0EgI\uFFFD\uFFFD\ + ^\x0FV\uFFFD\u0246^\uFFFDqJ\uFFFDO\x06&\uFFFD\x17qt\x1F\uFFFD\x18\uFFFD\ + m\uFFFD&\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x19\uFFFD\u06BC\uFFFD\uFFFD\uFFFD\ + \uFFFDBu\uFFFDb\uFFFD\uFFFD\uFFFD3\uFFFD,P\uFFFDmU\uFFFD\uFFFD\"\x1C\uFFFD\ + \uFFFD\uFFFDo\x89\uFFFD\x02\uFFFD\uFFFD)\uFFFD\x13o\uFFFD\"\uFFFD>\uFFFD\ + Q\b@\uFFFDq/\uFFFD\uFFFD\uFFFD\uFFFDe\uFFFDFU\uFFFD\uFFFD8\uFFFD\uFFFDi\uFFFD\ + \uFFFD\uFFFDd\uFFFD$\uFFFDr\u05CD\uFFFD\uFFFD\x02\uFFFD0\uFFFD\uFFFD\uFFFD\ + \v\uFFFD\uFFFD\uFFFD\uFFFD\x13T\x7FPK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFD\ + \uFFFD2G~\x01\0\0\x19\x03\0\0\x10\0\0\0docProps/app.xml\uFFFDR\uFFFDN\uFFFD\ + 0\x10\uFFFD\uFFFD\x15\uFFFD\uFFFD\uFFFDi\uFFFD\uFFFDS\uFFFD\x18\uFFFD\x02\ + \uFFFD\uFFFD\u04EB\uFFFD\0g\uFFFDl\x1A\v\u01F6\uFFFD\u06E8}_\uFFFD\uFFFD\ + \uFFFD!\x05N\uFFFD4;;\x1AOvW\uFFFD\uFFFD[\uFFFDu\x10\uFFFDxW\uFFFD\uFFFD\ + ,g\x198\uFFFD+\uFFFD\x05{.\x1F.\uFFFD\uFFFD\fI\uFFFDJY\uFFFD`\a@v#/\uFFFD\ + :\uFFFD\0\uFFFD\f`\uFFFD\x1C\x1C\x16\uFFFD!\nK\uFFFDQ7\uFFFD*\uFFFD\uFFFD\ + \uFFFDK\uFFFD\uFFFD\uFFFDVQ*\uFFFD\uFFFD\uFFFD6\x1A\uFFFD\u07B5\uFFFD\uFFFD\ + /\uFFFD\uFFFD\uFFFD\xDE\uFFFDUP]\uFFFD\u0450\x1D\x1D\uFFFD\x1D\uFFFD\u05B4\ + \uFFFD\u03C7/\uFFFD!$?)nC\uFFFDF+J?)\uFFFD\x1A\x1D=\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD\x06+\uFFFD\uFFFD)\uFFFD\uFFFD\x06\uFFFD.\x1A:\uFFFD\\\uFFFDi)6ZYX%cY+\uFFFD\ + \ \uFFFD'!\x1EA\uFFFD3[+\x13Q\uFFFD\uFFFD\uFFFD\x1Dh\uFFFD1C\uFFFD?Mm\uFFFD\ + \uFFFD7\uFFFD\uFFFD\uFFFD)X\uFFFD\uFFFDQ\uFFFD\uFFFDQv,\x06l\x03R\uFFFD\uFFFD\ + >\uFFFDc\x03@(\uFFFDH\x0Ep\uFFFD\uFFFDbs%\uFFFD \uFFFDs!\x1F\uFFFD$|\x1E\ + \uFFFD4d\x01\uFFFD\uFFFDk\x15\uFFFD\uFFFD\uFFFDi\uFFFD!\x03\uFFFDd\\\uFFFD\ + |\uFFFD\uFFFD&+cZ\u07F7\uFFFD\uFFFD'\uFFFD<\uFFFD\uFFFDmP.M\uFFFD\uFFFD\uFFFD\ + \u0278w|\x0E\uFFFD\uFFFDS\x04\uFFFD\uFFFD\uFFFD\uFFFDb\u04E8\bUZ\uFFFD8\uFFFD\ + \uFFFD\x10\uFFFD)`\uFFFD\uFFFD~\uFFFD(\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFD\uFFFDx\uFFFDr\uFFFD\uFFFD\uFFFD\uFFFD\e\uFFFD\x7F\uFFFD\x04\uFFFD\ + None: + """Build normalization replacements from the active test environment config. + + Compares the active config values against canonical (local) values and + creates replacement pairs for any that differ. This must be called once + at session start, before any cassettes are recorded. + + IMPORTANT: This module is installed as the ``tests-support`` package. + When modifying normalization logic, you must clear the tox and uv caches + so the updated code is picked up by test environments:: + + rm -rf packages/gooddata-sdk/.tox + uv cache clean tests-support --force + """ + global _normalization_replacements + replacements: list[tuple[str, str]] = [] + + parsed = urlparse(test_config.get("host", _CANONICAL_HOST)) + active_scheme = parsed.scheme or "http" + active_hostname = parsed.hostname or _CANONICAL_HOSTNAME + active_port = parsed.port + active_org_id = test_config.get("org_id", _CANONICAL_ORG_ID) + active_org_name = test_config.get("org_name", _CANONICAL_ORG_NAME) + active_org_hostname = test_config.get("org_hostname", _CANONICAL_HOSTNAME) + + # Build the active host string for URI replacement (e.g. "https://foo.example.com") + active_host_with_port = f"{active_hostname}:{active_port}" if active_port else active_hostname + + active_origin = f"{active_scheme}://{active_host_with_port}" + canonical_origin = _CANONICAL_HOST + + # Only add replacements for values that actually differ from canonical. + # Order matters: add longer/more-specific strings first. + + # Full origin URL: "https://staging.example.com" → "http://localhost:3000" + if active_origin != canonical_origin: + replacements.append((active_origin, canonical_origin)) + + # Hostname:port (only when the source actually has a port, so it differs + # from the bare hostname): "staging.example.com:8443" → "localhost:3000" + if active_port and active_host_with_port != "localhost:3000": + replacements.append((active_host_with_port, "localhost:3000")) + + # org_hostname (may differ from hostname, e.g. in multi-tenant setups) + if active_org_hostname != _CANONICAL_HOSTNAME and active_org_hostname != active_hostname: + replacements.append((active_org_hostname, _CANONICAL_HOSTNAME)) + + # Bare hostname: "staging.example.com" → "localhost" + if active_hostname != _CANONICAL_HOSTNAME: + replacements.append((active_hostname, _CANONICAL_HOSTNAME)) + + # Organization name: "Python SDK Dex" → "Default Organization" + if active_org_name != _CANONICAL_ORG_NAME: + replacements.append((active_org_name, _CANONICAL_ORG_NAME)) + + # Organization ID: "python-sdk-dex" → "default" + if active_org_id != _CANONICAL_ORG_ID: + replacements.append((active_org_id, _CANONICAL_ORG_ID)) + + # Sort by length descending so longer patterns are replaced first, + # preventing partial matches from corrupting longer strings. + replacements.sort(key=lambda pair: len(pair[0]), reverse=True) + + _normalization_replacements = replacements + + +def _apply_replacements(text: str) -> str: + """Apply all configured normalization replacements to a string.""" + for source, target in _normalization_replacements: + text = text.replace(source, target) + return text + + +def _normalize_body(body: str | None) -> str: + """Strip environment-specific fields from a JSON request body for matching.""" + if not body: + return body or "" + try: + data = json.loads(body) + except (JSONDecodeError, TypeError): + return body + + def _strip(obj: Any) -> Any: + if isinstance(obj, dict): + return {k: _strip(v) for k, v in obj.items() if k not in _ENV_SPECIFIC_BODY_FIELDS} + if isinstance(obj, list): + return [_strip(item) for item in obj] + return obj + + return json.dumps(_strip(data), sort_keys=True) + + +def _body_matcher(r1: Any, r2: Any) -> None: + """Custom VCR body matcher that ignores environment-specific fields.""" + b1 = _normalize_body(r1.body) + b2 = _normalize_body(r2.body) + assert b1 == b2, f"Request bodies differ after normalization:\n{b1}\n!=\n{b2}" + + +def _noop_matcher(r1: Any, r2: Any) -> None: + """Always matches — used to disable scheme/host/port matching across environments.""" + def get_vcr() -> vcr.VCR: gd_vcr = vcr.VCR( @@ -26,6 +147,11 @@ def get_vcr() -> vcr.VCR: decode_compressed_response=True, record_mode=RecordMode.ALL if "OVERWRITE" in os.environ else RecordMode.ONCE, ) + gd_vcr.register_matcher("body", _body_matcher) + # Cassettes recorded against staging must replay in CI (localhost). + # Disable scheme/host/port matching — path is sufficient. + for matcher in ("scheme", "host", "port"): + gd_vcr.register_matcher(matcher, _noop_matcher) gd_vcr.register_serializer("custom", CustomSerializerYaml()) gd_vcr.serializer = "custom" @@ -79,7 +205,24 @@ def serialize(self, cassette_dict: dict[str, Any]) -> str: return yaml.dump(cassette_dict, Dumper=IndentDumper, sort_keys=True) +def _normalize_uri(uri: str) -> str: + """Rewrite a request URI to use the canonical host.""" + if not _normalization_replacements: + return uri + return _apply_replacements(uri) + + def custom_before_request(request, headers_str: str = HEADERS_STR): + # Normalize URI to canonical host + request.uri = _normalize_uri(request.uri) + + # Normalize environment-specific values in request body + if _normalization_replacements and request.body: + if isinstance(request.body, bytes): + request.body = _apply_replacements(request.body.decode("utf-8", errors="replace")).encode("utf-8") + elif isinstance(request.body, str): + request.body = _apply_replacements(request.body) + if hasattr(request, headers_str): request.headers = {header: request.headers[header] for header in sorted(request.headers)} return request @@ -101,8 +244,26 @@ def custom_before_response( unified_headers = {} for header in sorted(response[headers_str]): (header, value) = resolve_header(header, non_static_headers, placeholder, response[headers_str]) + # Normalize environment-specific values in header values (e.g. Location) + if _normalization_replacements and value != placeholder: + if isinstance(value, list): + value = [_apply_replacements(v) if isinstance(v, str) else v for v in value] + elif isinstance(value, str): + value = _apply_replacements(value) unified_headers[header] = value response[headers_str] = unified_headers + + # Normalize environment-specific values in response body + if _normalization_replacements: + body = response.get("body") + if body is not None: + body_string = body.get("string") + if body_string: + if isinstance(body_string, bytes): + body["string"] = _apply_replacements(body_string.decode("utf-8", errors="replace")).encode("utf-8") + elif isinstance(body_string, str): + body["string"] = _apply_replacements(body_string) + return response From da7c7e4bf139c8a307c4a3240e12bc2ae95cda76 Mon Sep 17 00:00:00 2001 From: Jan Tychtl Date: Thu, 2 Apr 2026 15:33:52 +0200 Subject: [PATCH 5/6] chore(tests): regenerate VCR cassettes from staging risk: low --- .../fixtures/data_sources/bigquery.yaml | 2 +- ...t_declarative_data_sources_connection.yaml | 4 +- .../demo_register_upload_notification.yaml | 4 +- .../demo_test_declarative_data_sources.yaml | 2 +- .../catalog/fixtures/data_sources/dremio.yaml | 2 +- .../catalog/fixtures/data_sources/patch.yaml | 2 +- .../fixtures/data_sources/redshift.yaml | 2 +- .../fixtures/data_sources/snowflake.yaml | 4 +- .../data_sources/test_create_update.yaml | 2 +- .../fixtures/data_sources/vertica.yaml | 2 +- .../fixtures/organization/create_jwk.yaml | 2 +- .../organization/delete_csp_directive.yaml | 2 +- .../fixtures/organization/delete_jwk.yaml | 4 +- .../delete_organization_setting.yaml | 2 +- .../fixtures/organization/list_jwk.yaml | 4 +- .../fixtures/organization/update_jwk.yaml | 2 +- .../fixtures/users/create_delete_user.yaml | 2 +- .../users/create_delete_user_group.yaml | 2 +- .../fixtures/users/test_api_tokens.yaml | 2 +- .../catalog/fixtures/users/update_user.yaml | 2 +- .../analytics_store_load.yaml | 176 ++--- .../workspace_content/demo_catalog.yaml | 120 ++-- .../demo_catalog_availability.yaml | 120 ++-- .../demo_catalog_list_attributes.yaml | 6 +- .../demo_catalog_list_metrics.yaml | 48 +- .../demo_get_dependent_entities_graph.yaml | 262 ++++---- ...and_modify_ds_and_put_declarative_ldm.yaml | 2 +- ...d_and_put_declarative_analytics_model.yaml | 2 +- .../demo_load_and_put_declarative_ldm.yaml | 2 +- .../demo_put_declarative_analytics_model.yaml | 2 +- .../demo_put_declarative_ldm.yaml | 2 +- ...emo_store_declarative_analytics_model.yaml | 176 ++--- .../explicit_workspace_data_filter.yaml | 114 ++-- .../workspace_content/label_elements.yaml | 20 +- .../workspaces/create_workspace_setting.yaml | 2 +- .../workspaces/delete_workspace_setting.yaml | 2 +- .../workspaces/demo_clone_workspace.yaml | 628 +++++++++--------- .../workspaces/demo_create_workspace.yaml | 2 +- .../demo_put_declarative_workspace.yaml | 2 +- .../demo_store_declarative_workspaces.yaml | 176 ++--- .../workspaces/demo_translate_workspace.yaml | 270 ++++---- .../workspaces/list_workspace_settings.yaml | 4 +- .../workspaces/update_workspace_setting.yaml | 2 +- .../user_data_filters_for_user_group.yaml | 2 +- .../user_data_filters_life_cycle.yaml | 2 +- .../export/fixtures/test_export_csv.yaml | 10 +- .../test_export_csv_by_visualization_id.yaml | 62 +- .../export/fixtures/test_export_excel.yaml | 118 ++-- ...test_export_excel_by_visualization_id.yaml | 111 ++-- .../table_with_attribute_and_metric.yaml | 4 +- ...able_with_attribute_metric_and_filter.yaml | 4 +- .../table_with_attribute_show_all_values.yaml | 12 +- .../fixtures/table_with_just_attribute.yaml | 4 +- .../fixtures/table_with_just_metric.yaml | 4 +- 54 files changed, 1239 insertions(+), 1284 deletions(-) diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml index 97506f49e..d14e5e615 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/bigquery.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 75b2e3acd14d4e826d38134001054219 + traceId: 5b3a49d7e41f42124e0b6b941346220e headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml index 9f31b75e9..7ee091bef 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_put_declarative_data_sources_connection.yaml @@ -89,13 +89,13 @@ interactions: string: queryDurationMillis: createCacheTable: 0 - simpleSelect: 201 + simpleSelect: 7 successful: true headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate Content-Length: - - '83' + - '81' Content-Type: - application/json DATE: *id001 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml index 7b97df7eb..cdaf2509b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_register_upload_notification.yaml @@ -472,7 +472,7 @@ interactions: name: '# of Active Customers' localIdentifier: dim_0 links: - executionResult: 2fcdbb2f2abe941ca5c0e61ec6f94c1e2b4fb23e:ae5b67bbf51c98014dc42c2c8cd953c9911c20fbe8f9fc40545742dd9072c394 + executionResult: 87958d7451516de249651d644a629e18e28fa1dc:feabe138f229ccfb0e098c3423ec50ae1a4d6719f4e49a788f5e4956df39a88c headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -589,7 +589,7 @@ interactions: name: '# of Active Customers' localIdentifier: dim_0 links: - executionResult: 90421cbd60639e7c8ee0ca1389e167cbae092b8e:2e7aa7b2ed8e1600878abaf28e26d6670f1ae3c7921062f64f34c965b9fd53a4 + executionResult: a589f3e8fa5e8e75f0b3d0ba53c268dce9d791df:e2abd04d36801939cb15da2c27abeeacc426070627417409f0c47a5ccf968eb3 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml index 6f4f009c5..a86527b58 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/demo_test_declarative_data_sources.yaml @@ -146,7 +146,7 @@ interactions: string: queryDurationMillis: createCacheTable: 0 - simpleSelect: 5 + simpleSelect: 7 successful: true headers: Cache-Control: diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml index 2294ebcd5..3bfb02929 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/dremio.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 956d5e8c5fc54c668dca646492d25d90 + traceId: 4406e126c60d9b3890f7f2aec2f207da headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml index d440beb0f..0b454b83a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/patch.yaml @@ -82,7 +82,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: a2f4a53acf8507ead9dd72b931d24e58 + traceId: 9aece7b1fc6f591bbdbef60baa05dde3 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml index a6399d0cd..d8f0c9413 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/redshift.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 363644edf120b7628d301f132b123dd4 + traceId: acbfaa3baf732593a8d438b2ce4679fe headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml index 51e19ac48..15f238a60 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/snowflake.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 2ccd18dfaa7039f8d2a78c584155e616 + traceId: 08eff7c483bcd321187e1ceb00bb8de6 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -238,7 +238,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: dabaeac943cfe605d78ba2a52dd68dba + traceId: c5031bc7c8848ca7d1145607c098fdc5 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml index d15fd48b1..c38fba433 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/test_create_update.yaml @@ -82,7 +82,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 7660a8968ad613bc96d4fb831122d3af + traceId: e6b65d793cb3d71cc75aa3820033df17 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml index 5ae5bb5bd..aabd14103 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/data_sources/vertica.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 6b3ecc87cca7f1e609faa804a189007f + traceId: d092ad21c02baef6de33d57c7d990977 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml index a1f790032..5547595cf 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/create_jwk.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 1c5079e9bdb3b80f60d2c786c5e29819 + traceId: 7e0061442dde6ee34e70fb477cf45e0f headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml index 1976494ad..9b82125b4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_csp_directive.yaml @@ -123,7 +123,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 430b4a178c198c407aa25c2112df3c4a + traceId: f3b0b88842405661983a9e87204d8578 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml index 3fb7eabec..e0f886a8d 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_jwk.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: d758d920b5d099533370e83571bdbb96 + traceId: a0200f708fb8c51824b7cef887a90a0e headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -191,7 +191,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: b44cc4dc3da0fa741a7add4bab134a0e + traceId: f4ccf1071a2f1c64bae58625e3862397 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml index defe8f546..9b84baf8b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/delete_organization_setting.yaml @@ -125,7 +125,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 079a6d5123343486ff368ed273b38ae7 + traceId: e661f4ff5c3ff394141907d0688494bc headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml index 0993b6fc2..d4d421e3c 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/list_jwk.yaml @@ -70,7 +70,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 9d2a3c683c70fbe2fbfde11bc8b2d430 + traceId: 657e58098d281bc2ff609c9dd5689268 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -199,7 +199,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 5ac8534c1327f0d43bfebf56c8d5876f + traceId: bf08c7cea56c9f92db316f9901beb85d headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml index 8b78b83e5..77d2f0c8b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/organization/update_jwk.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: e4f9cc719e2ec963fc4696f996966f3d + traceId: c00fa54dd0bc7bc6de998b5f7f693932 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml index acd39aa44..fa738d18e 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user.yaml @@ -116,7 +116,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: a98119963ea8fe08b6277d9e2cd78d6f + traceId: afe4a49d4f5244d875e1e89352c48eb5 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml index a383a4e3d..7691386f9 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/create_delete_user_group.yaml @@ -116,7 +116,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 4bca0d1b5fd9cfba49309fc1626452a6 + traceId: c45a7f011598b62b3d064937eefefde0 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml index 1dd72540a..803526ac4 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/test_api_tokens.yaml @@ -73,7 +73,7 @@ interactions: string: data: attributes: - bearerToken: ZGVtbzp0ZXN0X3Rva2VuOjRyaHFLM0tidFE3RjVaNExueXNUNUhqTWIzVXRoeFAz + bearerToken: ZGVtbzp0ZXN0X3Rva2VuOmJHTTNhd0tMZzYrWUxOeGNTVHdJQWF1SndpM2s0Witl id: test_token type: apiToken links: diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml index f3bc32bed..6a4e9084a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/users/update_user.yaml @@ -116,7 +116,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: cfb1e89cf201bc91d9fe467f7352a646 + traceId: b7b33b64caba6cdd815f3e35b97eee8e headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml index 847ac3c09..9ab9d5733 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/analytics_store_load.yaml @@ -66,7 +66,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -109,7 +109,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -259,7 +259,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -271,7 +271,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -281,7 +281,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -332,7 +332,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -341,7 +341,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -351,7 +351,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -361,7 +361,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -371,7 +371,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -380,7 +380,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -389,7 +389,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -399,7 +399,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -409,7 +409,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -419,7 +419,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -429,7 +429,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -439,7 +439,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -449,7 +449,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -459,7 +459,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -470,7 +470,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -480,7 +480,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -490,7 +490,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -500,7 +500,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -509,7 +509,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -518,7 +518,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -527,7 +527,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -536,7 +536,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -545,7 +545,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -554,7 +554,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -620,7 +620,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -696,7 +696,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -775,7 +775,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -834,7 +834,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -891,7 +891,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -944,7 +944,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1019,7 +1019,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1076,7 +1076,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1175,7 +1175,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1231,7 +1231,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1270,7 +1270,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1326,7 +1326,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1394,7 +1394,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1451,7 +1451,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1508,7 +1508,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1612,7 +1612,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1655,7 +1655,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1805,7 +1805,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1817,7 +1817,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1827,7 +1827,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1878,7 +1878,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1887,7 +1887,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1897,7 +1897,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1907,7 +1907,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1917,7 +1917,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1926,7 +1926,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1935,7 +1935,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1945,7 +1945,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1955,7 +1955,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1965,7 +1965,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1975,7 +1975,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1985,7 +1985,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1995,7 +1995,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2005,7 +2005,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2016,7 +2016,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2026,7 +2026,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2036,7 +2036,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2046,7 +2046,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2055,7 +2055,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2064,7 +2064,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2073,7 +2073,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2082,7 +2082,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2091,7 +2091,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2100,7 +2100,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2166,7 +2166,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2242,7 +2242,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2321,7 +2321,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2380,7 +2380,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2437,7 +2437,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2490,7 +2490,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2565,7 +2565,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2622,7 +2622,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2721,7 +2721,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2777,7 +2777,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2816,7 +2816,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2872,7 +2872,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2940,7 +2940,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2997,7 +2997,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -3054,7 +3054,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml index b542ecda8..01e4a07ff 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog.yaml @@ -502,10 +502,10 @@ interactions: type: label labels: data: - - id: geo__state__location - type: label - id: state type: label + - id: geo__state__location + type: label type: attribute - attributes: areRelationsValid: true @@ -573,61 +573,61 @@ interactions: type: attribute referenceProperties: - identifier: - id: campaigns + id: products type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: campaign_id + - column: product_id dataType: INT isNullable: true nullValue: null target: - id: campaign_id + id: product_id type: attribute - identifier: - id: customers + id: campaigns type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: customer_id + - column: campaign_id dataType: INT isNullable: true nullValue: null target: - id: customer_id + id: campaign_id type: attribute - identifier: - id: products + id: date type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: product_id - dataType: INT + - column: date + dataType: DATE isNullable: true nullValue: null target: - id: product_id - type: attribute + id: date + type: date - identifier: - id: date + id: customers type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: date - dataType: DATE + - column: customer_id + dataType: INT isNullable: true nullValue: null target: - id: date - type: date + id: customer_id + type: attribute tags: - Order lines title: Order lines @@ -1005,7 +1005,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1881' + - '1883' Content-Type: - application/json DATE: &id001 @@ -1242,61 +1242,61 @@ interactions: type: attribute referenceProperties: - identifier: - id: campaigns + id: products type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: campaign_id + - column: product_id dataType: INT isNullable: true nullValue: null target: - id: campaign_id + id: product_id type: attribute - identifier: - id: customers + id: campaigns type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: customer_id + - column: campaign_id dataType: INT isNullable: true nullValue: null target: - id: customer_id + id: campaign_id type: attribute - identifier: - id: products + id: date type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: product_id - dataType: INT + - column: date + dataType: DATE isNullable: true nullValue: null target: - id: product_id - type: attribute + id: date + type: date - identifier: - id: date + id: customers type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: date - dataType: DATE + - column: customer_id + dataType: INT isNullable: true nullValue: null target: - id: date - type: date + id: customer_id + type: attribute tags: - Order lines title: Order lines @@ -1670,7 +1670,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1759' + - '1764' Content-Type: - application/json DATE: *id001 @@ -1717,7 +1717,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Active Customers' id: amount_of_active_customers links: @@ -1732,7 +1732,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Orders' id: amount_of_orders links: @@ -1748,7 +1748,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Top Customers' id: amount_of_top_customers links: @@ -1764,7 +1764,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 description: '' title: '# of Valid Orders' id: amount_of_valid_orders @@ -1780,7 +1780,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Campaign Spend id: campaign_spend links: @@ -1795,7 +1795,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Order Amount id: order_amount links: @@ -1810,7 +1810,7 @@ interactions: content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue' id: percent_revenue links: @@ -1826,7 +1826,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: @@ -1842,7 +1842,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: @@ -1858,7 +1858,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: @@ -1874,7 +1874,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: @@ -1890,7 +1890,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue in Category' id: percent_revenue_in_category links: @@ -1906,7 +1906,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue per Product' id: percent_revenue_per_product links: @@ -1922,7 +1922,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 description: '' title: Revenue id: revenue @@ -1939,7 +1939,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Clothing) id: revenue-clothing links: @@ -1955,7 +1955,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Electronic) id: revenue-electronic links: @@ -1971,7 +1971,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Home) id: revenue-home links: @@ -1987,7 +1987,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Outdoor) id: revenue-outdoor links: @@ -2002,7 +2002,7 @@ interactions: content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue per Customer id: revenue_per_customer links: @@ -2017,7 +2017,7 @@ interactions: content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: @@ -2032,7 +2032,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue / Top 10 id: revenue_top_10 links: @@ -2047,7 +2047,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue / Top 10% id: revenue_top_10_percent links: @@ -2062,7 +2062,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Total Revenue id: total_revenue links: @@ -2077,7 +2077,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Total Revenue (No Filters) id: total_revenue-no_filters links: diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml index 64769cca9..e5ed54331 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_availability.yaml @@ -502,10 +502,10 @@ interactions: type: label labels: data: - - id: geo__state__location - type: label - id: state type: label + - id: geo__state__location + type: label type: attribute - attributes: areRelationsValid: true @@ -573,61 +573,61 @@ interactions: type: attribute referenceProperties: - identifier: - id: campaigns + id: products type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: campaign_id + - column: product_id dataType: INT isNullable: true nullValue: null target: - id: campaign_id + id: product_id type: attribute - identifier: - id: customers + id: campaigns type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: customer_id + - column: campaign_id dataType: INT isNullable: true nullValue: null target: - id: customer_id + id: campaign_id type: attribute - identifier: - id: products + id: date type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: product_id - dataType: INT + - column: date + dataType: DATE isNullable: true nullValue: null target: - id: product_id - type: attribute + id: date + type: date - identifier: - id: date + id: customers type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: date - dataType: DATE + - column: customer_id + dataType: INT isNullable: true nullValue: null target: - id: date - type: date + id: customer_id + type: attribute tags: - Order lines title: Order lines @@ -1005,7 +1005,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1881' + - '1883' Content-Type: - application/json DATE: &id001 @@ -1241,20 +1241,6 @@ interactions: - id: order_line_id type: attribute referenceProperties: - - identifier: - id: customers - type: dataset - multivalue: false - sourceColumnDataTypes: null - sourceColumns: null - sources: - - column: customer_id - dataType: INT - isNullable: true - nullValue: null - target: - id: customer_id - type: attribute - identifier: id: products type: dataset @@ -1297,15 +1283,29 @@ interactions: target: id: date type: date + - identifier: + id: customers + type: dataset + multivalue: false + sourceColumnDataTypes: null + sourceColumns: null + sources: + - column: customer_id + dataType: INT + isNullable: true + nullValue: null + target: + id: customer_id + type: attribute tags: - Order lines title: Order lines type: NORMAL workspaceDataFilterColumns: - - dataType: STRING - name: wdf__state - dataType: STRING name: wdf__region + - dataType: STRING + name: wdf__state workspaceDataFilterReferences: - filterColumn: wdf__state filterColumnDataType: STRING @@ -1670,7 +1670,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1765' + - '1764' Content-Type: - application/json DATE: *id001 @@ -1717,7 +1717,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Active Customers' id: amount_of_active_customers links: @@ -1732,7 +1732,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Orders' id: amount_of_orders links: @@ -1748,7 +1748,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Top Customers' id: amount_of_top_customers links: @@ -1764,7 +1764,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 description: '' title: '# of Valid Orders' id: amount_of_valid_orders @@ -1780,7 +1780,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Campaign Spend id: campaign_spend links: @@ -1795,7 +1795,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Order Amount id: order_amount links: @@ -1810,7 +1810,7 @@ interactions: content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue' id: percent_revenue links: @@ -1826,7 +1826,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: @@ -1842,7 +1842,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: @@ -1858,7 +1858,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: @@ -1874,7 +1874,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: @@ -1890,7 +1890,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue in Category' id: percent_revenue_in_category links: @@ -1906,7 +1906,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue per Product' id: percent_revenue_per_product links: @@ -1922,7 +1922,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 description: '' title: Revenue id: revenue @@ -1939,7 +1939,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Clothing) id: revenue-clothing links: @@ -1955,7 +1955,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Electronic) id: revenue-electronic links: @@ -1971,7 +1971,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Home) id: revenue-home links: @@ -1987,7 +1987,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Outdoor) id: revenue-outdoor links: @@ -2002,7 +2002,7 @@ interactions: content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue per Customer id: revenue_per_customer links: @@ -2017,7 +2017,7 @@ interactions: content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: @@ -2032,7 +2032,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue / Top 10 id: revenue_top_10 links: @@ -2047,7 +2047,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue / Top 10% id: revenue_top_10_percent links: @@ -2062,7 +2062,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Total Revenue id: total_revenue links: @@ -2077,7 +2077,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Total Revenue (No Filters) id: total_revenue-no_filters links: diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml index c9b423150..63674796f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_attributes.yaml @@ -422,10 +422,10 @@ interactions: relationships: labels: data: - - id: state - type: label - id: geo__state__location type: label + - id: state + type: label type: attribute - attributes: areRelationsValid: true @@ -738,7 +738,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1366' + - '1365' Content-Type: - application/json DATE: &id001 diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml index b55328409..3c9971e7f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_catalog_list_metrics.yaml @@ -22,7 +22,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '# of Active Customers' id: amount_of_active_customers links: @@ -37,7 +37,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '# of Orders' id: amount_of_orders links: @@ -53,7 +53,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '# of Top Customers' id: amount_of_top_customers links: @@ -69,7 +69,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 description: '' title: '# of Valid Orders' id: amount_of_valid_orders @@ -85,7 +85,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Campaign Spend id: campaign_spend links: @@ -100,7 +100,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Order Amount id: order_amount links: @@ -115,7 +115,7 @@ interactions: content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue' id: percent_revenue links: @@ -131,7 +131,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: @@ -147,7 +147,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: @@ -163,7 +163,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: @@ -179,7 +179,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: @@ -195,7 +195,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue in Category' id: percent_revenue_in_category links: @@ -211,7 +211,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: '% Revenue per Product' id: percent_revenue_per_product links: @@ -227,7 +227,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 description: '' title: Revenue id: revenue @@ -244,7 +244,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue (Clothing) id: revenue-clothing links: @@ -260,7 +260,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue (Electronic) id: revenue-electronic links: @@ -276,7 +276,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue (Home) id: revenue-home links: @@ -292,7 +292,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue (Outdoor) id: revenue-outdoor links: @@ -307,7 +307,7 @@ interactions: content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue per Customer id: revenue_per_customer links: @@ -322,7 +322,7 @@ interactions: content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: @@ -337,7 +337,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue / Top 10 id: revenue_top_10 links: @@ -352,7 +352,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Revenue / Top 10% id: revenue_top_10_percent links: @@ -367,7 +367,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Total Revenue id: total_revenue links: @@ -382,7 +382,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 title: Total Revenue (No Filters) id: total_revenue-no_filters links: diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml index 0b876fa6b..eece85381 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_get_dependent_entities_graph.yaml @@ -36,19 +36,19 @@ interactions: type: dataset - - id: customer_id type: attribute - - id: percent_revenue_from_top_10_customers + - id: revenue_per_customer type: metric - - id: customer_id type: attribute - - id: amount_of_active_customers + - id: percent_revenue_from_top_10_customers type: metric - - id: customer_id type: attribute - - id: percent_revenue_from_top_10_percent_customers + - id: amount_of_active_customers type: metric - - id: customer_id type: attribute - - id: amount_of_top_customers + - id: percent_revenue_from_top_10_percent_customers type: metric - - id: customer_id type: attribute @@ -56,7 +56,7 @@ interactions: type: dataset - - id: customer_id type: attribute - - id: revenue_per_customer + - id: amount_of_top_customers type: metric - - id: customer_name type: attribute @@ -78,22 +78,22 @@ interactions: type: attribute - id: date type: dataset - - - id: date.year - type: attribute - - id: product_revenue_comparison-over_previous_period - type: visualizationObject - - id: date.year type: attribute - id: date type: dataset - - - id: order_id + - - id: date.year type: attribute - - id: order_lines - type: dataset + - id: product_revenue_comparison-over_previous_period + type: visualizationObject - - id: order_id type: attribute - id: amount_of_orders type: metric + - - id: order_id + type: attribute + - id: order_lines + type: dataset - - id: order_line_id type: attribute - id: amount_of_active_customers @@ -108,32 +108,32 @@ interactions: type: dataset - - id: product_id type: attribute - - id: products - type: dataset + - id: percent_revenue_per_product + type: metric - - id: product_id type: attribute - - id: percent_revenue_from_top_10_percent_products - type: metric + - id: products + type: dataset - - id: product_id type: attribute - id: percent_revenue_from_top_10_products type: metric - - id: product_id type: attribute - - id: percent_revenue_per_product + - id: percent_revenue_from_top_10_percent_products type: metric - - id: product_name type: attribute - id: products type: dataset - - - id: products.category - type: attribute - - id: products - type: dataset - - id: products.category type: attribute - id: percent_revenue_in_category type: metric + - - id: products.category + type: attribute + - id: products + type: dataset - - id: region type: attribute - id: customers @@ -168,32 +168,32 @@ interactions: type: dataset - - id: date type: dataset - - id: revenue_by_category_trend + - id: customers_trend type: visualizationObject - - id: date type: dataset - - id: percentage_of_customers_by_region + - id: revenue_by_category_trend type: visualizationObject - - id: date type: dataset - - id: product_revenue_comparison-over_previous_period + - id: revenue_trend type: visualizationObject - - - id: date - type: dataset - - id: order_lines - type: dataset - - id: date type: dataset - id: product_and_category type: analyticalDashboard - - id: date type: dataset - - id: revenue_trend + - id: percentage_of_customers_by_region type: visualizationObject - - id: date type: dataset - - id: customers_trend + - id: product_revenue_comparison-over_previous_period type: visualizationObject + - - id: date + type: dataset + - id: order_lines + type: dataset - - id: products type: dataset - id: order_lines @@ -202,38 +202,38 @@ interactions: type: fact - id: campaign_channels type: dataset - - - id: price - type: fact - - id: order_lines - type: dataset - - id: price type: fact - id: order_amount type: metric - - id: price type: fact - - id: revenue_and_quantity_by_product_and_category - type: visualizationObject - - - id: quantity - type: fact - id: order_lines type: dataset + - - id: price + type: fact + - id: revenue_and_quantity_by_product_and_category + type: visualizationObject - - id: quantity type: fact - id: order_amount type: metric + - - id: quantity + type: fact + - id: order_lines + type: dataset - - id: quantity type: fact - id: revenue_and_quantity_by_product_and_category type: visualizationObject - - - id: spend - type: fact - - id: campaign_channels - type: dataset - - id: spend type: fact - id: campaign_spend type: metric + - - id: spend + type: fact + - id: campaign_channels + type: dataset - - id: campaign_channel_id type: label - id: campaign_channel_id @@ -252,8 +252,8 @@ interactions: type: attribute - - id: campaign_name type: label - - id: campaign_spend - type: visualizationObject + - id: campaign_name + type: attribute - - id: campaign_name type: label - id: revenue_per_usd_vs_spend_by_campaign @@ -264,8 +264,8 @@ interactions: type: filterContext - - id: campaign_name type: label - - id: campaign_name - type: attribute + - id: campaign_spend + type: visualizationObject - - id: customer_id type: label - id: customer_id @@ -292,23 +292,23 @@ interactions: type: attribute - - id: date.month type: label - - id: revenue_by_category_trend + - id: customers_trend type: visualizationObject - - id: date.month type: label - - id: percentage_of_customers_by_region - type: visualizationObject + - id: date.month + type: attribute - - id: date.month type: label - - id: revenue_trend + - id: revenue_by_category_trend type: visualizationObject - - id: date.month type: label - - id: date.month - type: attribute + - id: percentage_of_customers_by_region + type: visualizationObject - - id: date.month type: label - - id: customers_trend + - id: revenue_trend type: visualizationObject - - id: date.quarter type: label @@ -334,10 +334,6 @@ interactions: type: label - id: order_line_id type: attribute - - - id: order_status - type: label - - id: amount_of_valid_orders - type: metric - - id: order_status type: label - id: revenue @@ -346,33 +342,37 @@ interactions: type: label - id: order_status type: attribute + - - id: order_status + type: label + - id: amount_of_valid_orders + type: metric - - id: product_id type: label - id: product_id type: attribute - - id: product_name type: label - - id: top_10_products + - id: revenue_by_product type: visualizationObject - - id: product_name type: label - - id: product_revenue_comparison-over_previous_period + - id: top_10_products type: visualizationObject - - id: product_name type: label - - id: product_saleability + - id: product_breakdown type: visualizationObject - - id: product_name type: label - - id: revenue_and_quantity_by_product_and_category + - id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - - id: product_name type: label - - id: product_name - type: attribute + - id: revenue_and_quantity_by_product_and_category + type: visualizationObject - - id: product_name type: label - - id: percent_revenue_per_product_by_customer_and_category + - id: product_saleability type: visualizationObject - - id: product_name type: label @@ -380,51 +380,47 @@ interactions: type: visualizationObject - - id: product_name type: label - - id: revenue_by_product - type: visualizationObject + - id: product_name + type: attribute - - id: product_name type: label - - id: product_breakdown - type: visualizationObject - - - id: products.category - type: label - - id: revenue_by_category_trend + - id: product_revenue_comparison-over_previous_period type: visualizationObject - - id: products.category type: label - - id: top_10_products - type: visualizationObject + - id: revenue-electronic + type: metric - - id: products.category type: label - - id: revenue-home - type: metric + - id: products.category + type: attribute - - id: products.category type: label - id: revenue-clothing type: metric - - id: products.category type: label - - id: product_revenue_comparison-over_previous_period + - id: top_10_products type: visualizationObject - - id: products.category type: label - - id: revenue_and_quantity_by_product_and_category + - id: product_breakdown type: visualizationObject - - id: products.category type: label - - id: percent_revenue_per_product_by_customer_and_category + - id: revenue_by_category_trend type: visualizationObject - - id: products.category type: label - - id: product_categories_pie_chart + - id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - - id: products.category type: label - - id: products.category - type: attribute + - id: revenue_and_quantity_by_product_and_category + type: visualizationObject - - id: products.category type: label - - id: revenue-electronic + - id: revenue-home type: metric - - id: products.category type: label @@ -432,7 +428,11 @@ interactions: type: metric - - id: products.category type: label - - id: product_breakdown + - id: product_categories_pie_chart + type: visualizationObject + - - id: products.category + type: label + - id: product_revenue_comparison-over_previous_period type: visualizationObject - - id: region type: label @@ -464,15 +464,19 @@ interactions: type: visualizationObject - - id: amount_of_active_customers type: metric - - id: amount_of_top_customers - type: metric + - id: customers_trend + type: visualizationObject - - id: amount_of_active_customers type: metric - id: percentage_of_customers_by_region type: visualizationObject - - id: amount_of_active_customers type: metric - - id: customers_trend + - id: amount_of_top_customers + type: metric + - - id: amount_of_orders + type: metric + - id: product_saleability type: visualizationObject - - id: amount_of_orders type: metric @@ -480,11 +484,11 @@ interactions: type: metric - - id: amount_of_orders type: metric - - id: product_saleability + - id: revenue_trend type: visualizationObject - - - id: amount_of_orders + - - id: campaign_spend type: metric - - id: revenue_trend + - id: revenue_per_usd_vs_spend_by_campaign type: visualizationObject - - id: campaign_spend type: metric @@ -494,10 +498,6 @@ interactions: type: metric - id: campaign_spend type: visualizationObject - - - id: campaign_spend - type: metric - - id: revenue_per_usd_vs_spend_by_campaign - type: visualizationObject - - id: order_amount type: metric - id: revenue @@ -512,47 +512,43 @@ interactions: type: visualizationObject - - id: revenue type: metric - - id: percent_revenue_from_top_10_customers + - id: total_revenue type: metric - - id: revenue type: metric - - id: revenue_by_category_trend + - id: revenue_by_product type: visualizationObject - - id: revenue type: metric - - id: percent_revenue_in_category + - id: revenue-electronic type: metric - - id: revenue type: metric - - id: percent_revenue_per_product + - id: percent_revenue type: metric - - id: revenue type: metric - - id: revenue-clothing - type: metric + - id: product_breakdown + type: visualizationObject - - id: revenue type: metric - - id: product_saleability + - id: revenue_by_category_trend type: visualizationObject - - id: revenue type: metric - - id: percent_revenue_from_top_10_percent_customers + - id: amount_of_top_customers type: metric - - id: revenue type: metric - - id: percent_revenue + - id: percent_revenue_from_top_10_percent_products type: metric - - id: revenue type: metric - - id: total_revenue - type: metric - - - id: revenue + - id: revenue_top_10_percent type: metric - - id: percent_revenue_per_product_by_customer_and_category - type: visualizationObject - - id: revenue type: metric - - id: product_categories_pie_chart + - id: revenue_and_quantity_by_product_and_category type: visualizationObject - - id: revenue type: metric @@ -560,23 +556,23 @@ interactions: type: visualizationObject - - id: revenue type: metric - - id: revenue_top_10_percent + - id: revenue-home type: metric - - id: revenue type: metric - - id: revenue_by_product + - id: product_saleability type: visualizationObject - - id: revenue type: metric - - id: revenue-electronic + - id: percent_revenue_from_top_10_customers type: metric - - id: revenue type: metric - - id: revenue-outdoor + - id: percent_revenue_from_top_10_products type: metric - - id: revenue type: metric - - id: revenue_per_customer + - id: percent_revenue_in_category type: metric - - id: revenue type: metric @@ -584,36 +580,40 @@ interactions: type: metric - - id: revenue type: metric - - id: percent_revenue_from_top_10_percent_products + - id: revenue_top_10 type: metric - - id: revenue type: metric - - id: percent_revenue_from_top_10_products - type: metric + - id: product_revenue_comparison-over_previous_period + type: visualizationObject - - id: revenue type: metric - - id: revenue-home + - id: revenue-clothing type: metric - - id: revenue type: metric - - id: product_revenue_comparison-over_previous_period + - id: percent_revenue_per_product_by_customer_and_category type: visualizationObject - - id: revenue type: metric - - id: revenue_top_10 + - id: percent_revenue_per_product type: metric - - id: revenue type: metric - - id: amount_of_top_customers + - id: revenue-outdoor type: metric - - id: revenue type: metric - - id: revenue_and_quantity_by_product_and_category - type: visualizationObject + - id: revenue_per_customer + type: metric - - id: revenue type: metric - - id: product_breakdown + - id: product_categories_pie_chart type: visualizationObject + - - id: revenue + type: metric + - id: percent_revenue_from_top_10_percent_customers + type: metric - - id: revenue_per_customer type: metric - id: customers_trend @@ -626,6 +626,10 @@ interactions: type: metric - id: percent_revenue_from_top_10_customers type: metric + - - id: revenue_top_10 + type: metric + - id: top_10_customers + type: visualizationObject - - id: revenue_top_10 type: metric - id: top_10_products @@ -634,10 +638,6 @@ interactions: type: metric - id: percent_revenue_from_top_10_products type: metric - - - id: revenue_top_10 - type: metric - - id: top_10_customers - type: visualizationObject - - id: revenue_top_10_percent type: metric - id: percent_revenue_from_top_10_percent_customers @@ -648,11 +648,11 @@ interactions: type: metric - - id: total_revenue type: metric - - id: total_revenue-no_filters + - id: percent_revenue type: metric - - id: total_revenue type: metric - - id: percent_revenue + - id: total_revenue-no_filters type: metric - - id: campaign_spend type: visualizationObject @@ -696,11 +696,11 @@ interactions: type: analyticalDashboard - - id: campaign_name_filter type: filterContext - - id: campaign + - id: dashboard_plugin type: analyticalDashboard - - id: campaign_name_filter type: filterContext - - id: dashboard_plugin + - id: campaign type: analyticalDashboard - - id: region_filter type: filterContext diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml index f657c8857..853751842 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_modify_ds_and_put_declarative_ldm.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 74a7c46bd75a944dc1f35a7e943adf8d + traceId: 76a5ba2ba9ede577f58db80c4a6d855b headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml index 4a5ba9d91..a911e891f 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_analytics_model.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 8c063e5141115d5de52fab41eaa09ef9 + traceId: 9c789d5c0e063a866b911607e7365473 headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml index 790d346c4..e0cd5c87a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_load_and_put_declarative_ldm.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 622adec9e54ff1a57e336557937d4107 + traceId: 6d086f3cc18fdf0cdf61ee6b3e96c028 headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml index cd8785051..b6a43ca18 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_analytics_model.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: d93a9631265ac23089b081c7c7a96a27 + traceId: dd63221c7b6e581544a025de5146b31e headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml index c7811e658..b3c39e773 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_put_declarative_ldm.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 95eb83a60fa737638cf1a6fa6a6a10c2 + traceId: 85e5f546b165f35d9d1ee4ee5d389947 headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml index 9fafd4c1b..9469dcadb 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/demo_store_declarative_analytics_model.yaml @@ -66,7 +66,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -109,7 +109,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -259,7 +259,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -271,7 +271,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -281,7 +281,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -332,7 +332,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -341,7 +341,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -351,7 +351,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -361,7 +361,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -371,7 +371,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -380,7 +380,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -389,7 +389,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -399,7 +399,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -409,7 +409,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -419,7 +419,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -429,7 +429,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -439,7 +439,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -449,7 +449,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -459,7 +459,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -470,7 +470,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -480,7 +480,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -490,7 +490,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -500,7 +500,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -509,7 +509,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -518,7 +518,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -527,7 +527,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -536,7 +536,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -545,7 +545,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -554,7 +554,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -620,7 +620,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -696,7 +696,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -775,7 +775,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -834,7 +834,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -891,7 +891,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -944,7 +944,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1019,7 +1019,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1076,7 +1076,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1175,7 +1175,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1231,7 +1231,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1270,7 +1270,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1326,7 +1326,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1394,7 +1394,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1451,7 +1451,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1508,7 +1508,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1721,7 +1721,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1764,7 +1764,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1914,7 +1914,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1926,7 +1926,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1936,7 +1936,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1987,7 +1987,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -1996,7 +1996,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2006,7 +2006,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2016,7 +2016,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2026,7 +2026,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2035,7 +2035,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2044,7 +2044,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2054,7 +2054,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2064,7 +2064,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2074,7 +2074,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2084,7 +2084,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2094,7 +2094,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2104,7 +2104,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2114,7 +2114,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2125,7 +2125,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2135,7 +2135,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2145,7 +2145,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2155,7 +2155,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2164,7 +2164,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2173,7 +2173,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2182,7 +2182,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2191,7 +2191,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2200,7 +2200,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2209,7 +2209,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2275,7 +2275,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2351,7 +2351,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2430,7 +2430,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2489,7 +2489,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2546,7 +2546,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2599,7 +2599,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2674,7 +2674,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2731,7 +2731,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2830,7 +2830,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2886,7 +2886,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2925,7 +2925,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -2981,7 +2981,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -3049,7 +3049,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -3106,7 +3106,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user @@ -3163,7 +3163,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:25 createdBy: id: admin type: user diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml index 61ad3b6a7..b3ee86760 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/explicit_workspace_data_filter.yaml @@ -1893,20 +1893,6 @@ interactions: - id: order_line_id type: attribute referenceProperties: - - identifier: - id: customers - type: dataset - multivalue: false - sourceColumnDataTypes: null - sourceColumns: null - sources: - - column: customer_id - dataType: INT - isNullable: true - nullValue: null - target: - id: customer_id - type: attribute - identifier: id: products type: dataset @@ -1949,15 +1935,29 @@ interactions: target: id: date type: date + - identifier: + id: customers + type: dataset + multivalue: false + sourceColumnDataTypes: null + sourceColumns: null + sources: + - column: customer_id + dataType: INT + isNullable: true + nullValue: null + target: + id: customer_id + type: attribute tags: - Order lines title: Order lines type: NORMAL workspaceDataFilterColumns: - - dataType: STRING - name: wdf__state - dataType: STRING name: wdf__region + - dataType: STRING + name: wdf__state workspaceDataFilterReferences: - filterColumn: wdf__region filterColumnDataType: STRING @@ -2332,7 +2332,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1888' + - '1890' Content-Type: - application/json DATE: *id001 @@ -2574,18 +2574,18 @@ interactions: type: attribute referenceProperties: - identifier: - id: customers + id: campaigns type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: customer_id + - column: campaign_id dataType: INT isNullable: true nullValue: null target: - id: customer_id + id: campaign_id type: attribute - identifier: id: products @@ -2602,42 +2602,42 @@ interactions: id: product_id type: attribute - identifier: - id: campaigns + id: date type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: campaign_id - dataType: INT + - column: date + dataType: DATE isNullable: true nullValue: null target: - id: campaign_id - type: attribute + id: date + type: date - identifier: - id: date + id: customers type: dataset multivalue: false sourceColumnDataTypes: null sourceColumns: null sources: - - column: date - dataType: DATE + - column: customer_id + dataType: INT isNullable: true nullValue: null target: - id: date - type: date + id: customer_id + type: attribute tags: - Order lines title: Order lines type: NORMAL workspaceDataFilterColumns: - - dataType: STRING - name: wdf__state - dataType: STRING name: wdf__region + - dataType: STRING + name: wdf__state workspaceDataFilterReferences: - filterColumn: wdf__region filterColumnDataType: STRING @@ -3002,7 +3002,7 @@ interactions: Content-Encoding: - br Content-Length: - - '1771' + - '1766' Content-Type: - application/json DATE: *id001 @@ -3049,7 +3049,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Active Customers' id: amount_of_active_customers links: @@ -3064,7 +3064,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Orders' id: amount_of_orders links: @@ -3080,7 +3080,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '# of Top Customers' id: amount_of_top_customers links: @@ -3096,7 +3096,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 description: '' title: '# of Valid Orders' id: amount_of_valid_orders @@ -3112,7 +3112,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Campaign Spend id: campaign_spend links: @@ -3127,7 +3127,7 @@ interactions: content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Order Amount id: order_amount links: @@ -3142,7 +3142,7 @@ interactions: content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue' id: percent_revenue links: @@ -3158,7 +3158,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10 Customers' id: percent_revenue_from_top_10_customers links: @@ -3174,7 +3174,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10% Customers' id: percent_revenue_from_top_10_percent_customers links: @@ -3190,7 +3190,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10% Products' id: percent_revenue_from_top_10_percent_products links: @@ -3206,7 +3206,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue from Top 10 Products' id: percent_revenue_from_top_10_products links: @@ -3222,7 +3222,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue in Category' id: percent_revenue_in_category links: @@ -3238,7 +3238,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: '% Revenue per Product' id: percent_revenue_per_product links: @@ -3254,7 +3254,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 description: '' title: Revenue id: revenue @@ -3271,7 +3271,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Clothing) id: revenue-clothing links: @@ -3287,7 +3287,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Electronic) id: revenue-electronic links: @@ -3303,7 +3303,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Home) id: revenue-home links: @@ -3319,7 +3319,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue (Outdoor) id: revenue-outdoor links: @@ -3334,7 +3334,7 @@ interactions: content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue per Customer id: revenue_per_customer links: @@ -3349,7 +3349,7 @@ interactions: content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue per Dollar Spent id: revenue_per_dollar_spent links: @@ -3364,7 +3364,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue / Top 10 id: revenue_top_10 links: @@ -3379,7 +3379,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Revenue / Top 10% id: revenue_top_10_percent links: @@ -3394,7 +3394,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Total Revenue id: total_revenue links: @@ -3409,7 +3409,7 @@ interactions: content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:25 title: Total Revenue (No Filters) id: total_revenue-no_filters links: diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml index 620b3b0d8..54f396871 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspace_content/label_elements.yaml @@ -26,7 +26,7 @@ interactions: response: body: string: - cacheId: 61fa066fcd6f91f290b20d1a5b40fe1e + cacheId: 0b40cdbc679d387db217b97dd6371541 elements: - primaryTitle: Canceled title: Canceled @@ -93,7 +93,7 @@ interactions: response: body: string: - cacheId: ed4f8a23336ebafeae1d06d38773b6c2 + cacheId: 43bafb9cd8fdca5fe7c015f6eeb337c9 elements: - primaryTitle: Delivered title: Delivered @@ -155,7 +155,7 @@ interactions: response: body: string: - cacheId: 3553df7b174c1c2db5a6be89ac429b9f + cacheId: a7af6e55f5e1f240334a9336c62b8e5d elements: - primaryTitle: Canceled title: Canceled @@ -229,7 +229,7 @@ interactions: response: body: string: - cacheId: eac9cfc5cde5b4a14255e559523e215e + cacheId: 72a893ab621cc5bf12e05f1fb4a6c1c1 elements: [] paging: count: 0 @@ -298,7 +298,7 @@ interactions: response: body: string: - cacheId: 658bf33944da8e3628ed4247379f5b86 + cacheId: ac625edd9c8abd35c204e08cf07b4b64 elements: [] paging: count: 0 @@ -363,7 +363,7 @@ interactions: response: body: string: - cacheId: 61fa066fcd6f91f290b20d1a5b40fe1e + cacheId: 0b40cdbc679d387db217b97dd6371541 elements: - primaryTitle: Canceled title: Canceled @@ -428,7 +428,7 @@ interactions: response: body: string: - cacheId: 352176af4858a0e4d392c18758a3eec3 + cacheId: 52d9568df1019274dfb0d93c9abf45a9 elements: - primaryTitle: Delivered title: Delivered @@ -492,7 +492,7 @@ interactions: response: body: string: - cacheId: a08f904867e8d8459eefadc86f094f38 + cacheId: b37d6a1305cfde23033b3fb0d1705798 elements: - primaryTitle: Canceled title: Canceled @@ -557,7 +557,7 @@ interactions: response: body: string: - cacheId: c63d048131792776014bf3b9f9db5c1c + cacheId: 4bc2c2be5287d77e628bbb7a14bb8e61 elements: - primaryTitle: Returned title: Returned @@ -623,7 +623,7 @@ interactions: response: body: string: - cacheId: 3553df7b174c1c2db5a6be89ac429b9f + cacheId: a7af6e55f5e1f240334a9336c62b8e5d elements: - primaryTitle: Delivered title: Delivered diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml index 4ff2c5765..906734d11 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/create_workspace_setting.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 12e12fabc332602d869be5b13d27b49f + traceId: 35b81bb03c2c21e31f60813871b45198 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml index 28cf504d3..672e262db 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/delete_workspace_setting.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: bf85b0e584f229d359aca2d12d237aff + traceId: c3a54dcb793721b42eb232e8be68e8c8 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml index 8acd19568..837f1710b 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_clone_workspace.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 9111c8778e5284b189820d0cf98c2d40 + traceId: ec0b39c867c442deaebb59e78abd4695 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -186,7 +186,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -229,7 +229,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -379,7 +379,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -391,7 +391,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -401,7 +401,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -452,7 +452,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -461,7 +461,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -471,7 +471,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -481,7 +481,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -491,7 +491,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -500,7 +500,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -509,7 +509,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -519,7 +519,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -529,7 +529,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -539,7 +539,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -549,7 +549,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -559,7 +559,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -569,7 +569,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -579,7 +579,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -590,7 +590,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -600,7 +600,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -610,7 +610,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -620,7 +620,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -629,7 +629,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -638,7 +638,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -647,7 +647,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -656,7 +656,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -665,7 +665,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -674,7 +674,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -740,7 +740,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -816,7 +816,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -895,7 +895,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -954,7 +954,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1011,7 +1011,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1064,7 +1064,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1139,7 +1139,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1196,7 +1196,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1295,7 +1295,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1351,7 +1351,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1390,7 +1390,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1446,7 +1446,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1514,7 +1514,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1571,7 +1571,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1628,7 +1628,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2124,7 +2124,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 7962c53f71668c78901ba9a614e6d8de + traceId: 6f50a9a19eef5c2c8e50aef1753d9f00 headers: Cache-Control: - max-age=5, private @@ -2170,7 +2170,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: a147cad3e7191328f018c2539112f5ed + traceId: ba6e3d4c8d03ba247ccf0a907a5614ca headers: Cache-Control: - max-age=5, private @@ -2458,7 +2458,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2501,7 +2501,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2651,7 +2651,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2663,7 +2663,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2673,7 +2673,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2724,7 +2724,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2733,7 +2733,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2743,7 +2743,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2753,7 +2753,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2763,7 +2763,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2772,7 +2772,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2781,7 +2781,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2791,7 +2791,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2801,7 +2801,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2811,7 +2811,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2821,7 +2821,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2831,7 +2831,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2840,7 +2840,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2850,7 +2850,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2860,7 +2860,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2870,7 +2870,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2879,7 +2879,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2888,7 +2888,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2897,7 +2897,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2906,7 +2906,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2915,7 +2915,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2924,7 +2924,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2933,7 +2933,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2942,7 +2942,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3008,7 +3008,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3084,7 +3084,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3163,7 +3163,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3222,7 +3222,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3279,7 +3279,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3332,7 +3332,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3407,7 +3407,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3464,7 +3464,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3563,7 +3563,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3619,7 +3619,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3658,7 +3658,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3714,7 +3714,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3782,7 +3782,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3839,7 +3839,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3896,7 +3896,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4568,7 +4568,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4611,7 +4611,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4761,7 +4761,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4773,7 +4773,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4783,7 +4783,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4834,7 +4834,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4843,7 +4843,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4853,7 +4853,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4863,7 +4863,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4873,7 +4873,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4882,7 +4882,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4891,7 +4891,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4901,7 +4901,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4911,7 +4911,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4921,7 +4921,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4931,7 +4931,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4941,7 +4941,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4951,7 +4951,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4961,7 +4961,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4972,7 +4972,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4982,7 +4982,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4992,7 +4992,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5002,7 +5002,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5011,7 +5011,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5020,7 +5020,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5029,7 +5029,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5038,7 +5038,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5047,7 +5047,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5056,7 +5056,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5122,7 +5122,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5198,7 +5198,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5277,7 +5277,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5336,7 +5336,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5393,7 +5393,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5446,7 +5446,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5521,7 +5521,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5578,7 +5578,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5677,7 +5677,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5733,7 +5733,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5772,7 +5772,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5828,7 +5828,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5896,7 +5896,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5953,7 +5953,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6010,7 +6010,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6504,7 +6504,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6547,7 +6547,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6697,7 +6697,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6709,7 +6709,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6719,7 +6719,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6770,7 +6770,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6779,7 +6779,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6789,7 +6789,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6799,7 +6799,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6809,7 +6809,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6818,7 +6818,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6827,7 +6827,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6837,7 +6837,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6847,7 +6847,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6857,7 +6857,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6867,7 +6867,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6877,7 +6877,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6887,7 +6887,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6897,7 +6897,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6908,7 +6908,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6918,7 +6918,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6928,7 +6928,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6938,7 +6938,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6947,7 +6947,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6956,7 +6956,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6965,7 +6965,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6974,7 +6974,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6983,7 +6983,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6992,7 +6992,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7058,7 +7058,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7134,7 +7134,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7213,7 +7213,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7272,7 +7272,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7329,7 +7329,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7382,7 +7382,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7457,7 +7457,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7514,7 +7514,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7613,7 +7613,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7669,7 +7669,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7708,7 +7708,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7764,7 +7764,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7832,7 +7832,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7889,7 +7889,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -7946,7 +7946,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -8442,7 +8442,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 0c3208d8d43b9585b8ad6e4372a57801 + traceId: c38e2a74cde575841892433f72ffae79 headers: Cache-Control: - max-age=5, private @@ -8488,7 +8488,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: c5d1e78800cce082e70891cf05afdc5f + traceId: 0408bcbf6d5dfa3ba68d59ffbdf5bace headers: Cache-Control: - max-age=5, private @@ -8790,7 +8790,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -8833,7 +8833,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -8983,7 +8983,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -8995,7 +8995,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9005,7 +9005,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9056,7 +9056,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9065,7 +9065,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9075,7 +9075,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9085,7 +9085,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9095,7 +9095,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9104,7 +9104,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9113,7 +9113,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9123,7 +9123,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9133,7 +9133,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9143,7 +9143,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9153,7 +9153,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9163,7 +9163,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9172,7 +9172,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9182,7 +9182,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9192,7 +9192,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9202,7 +9202,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9211,7 +9211,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9220,7 +9220,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9229,7 +9229,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9238,7 +9238,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9247,7 +9247,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9256,7 +9256,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9265,7 +9265,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9274,7 +9274,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9340,7 +9340,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9416,7 +9416,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9495,7 +9495,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9554,7 +9554,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9611,7 +9611,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9664,7 +9664,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9739,7 +9739,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9796,7 +9796,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9895,7 +9895,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9951,7 +9951,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -9990,7 +9990,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -10046,7 +10046,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -10114,7 +10114,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -10171,7 +10171,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -10228,7 +10228,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11026,7 +11026,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11069,7 +11069,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11219,7 +11219,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11231,7 +11231,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11241,7 +11241,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11292,7 +11292,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11301,7 +11301,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11311,7 +11311,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11321,7 +11321,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11331,7 +11331,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11340,7 +11340,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11349,7 +11349,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11359,7 +11359,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11369,7 +11369,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11379,7 +11379,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11389,7 +11389,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11399,7 +11399,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11409,7 +11409,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11419,7 +11419,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11430,7 +11430,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11440,7 +11440,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11450,7 +11450,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11460,7 +11460,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11469,7 +11469,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11478,7 +11478,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11487,7 +11487,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11496,7 +11496,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11505,7 +11505,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11514,7 +11514,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11580,7 +11580,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11656,7 +11656,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11735,7 +11735,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11794,7 +11794,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11851,7 +11851,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11904,7 +11904,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -11979,7 +11979,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12036,7 +12036,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12135,7 +12135,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12191,7 +12191,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12230,7 +12230,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12286,7 +12286,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12354,7 +12354,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12411,7 +12411,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -12468,7 +12468,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13157,7 +13157,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 58384d10fbfb88948b7f845f49ef125e + traceId: 059f87e982390ef3da80a6d400e5bcae headers: Cache-Control: - max-age=5, private @@ -13459,7 +13459,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13502,7 +13502,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13652,7 +13652,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13664,7 +13664,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13674,7 +13674,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13725,7 +13725,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13734,7 +13734,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13744,7 +13744,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13754,7 +13754,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13764,7 +13764,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13773,7 +13773,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13782,7 +13782,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13792,7 +13792,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13802,7 +13802,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13812,7 +13812,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13822,7 +13822,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13832,7 +13832,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13841,7 +13841,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13851,7 +13851,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13861,7 +13861,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13871,7 +13871,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13880,7 +13880,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13889,7 +13889,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13898,7 +13898,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13907,7 +13907,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13916,7 +13916,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13925,7 +13925,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13934,7 +13934,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -13943,7 +13943,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14009,7 +14009,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14085,7 +14085,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14164,7 +14164,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14223,7 +14223,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14280,7 +14280,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14333,7 +14333,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14408,7 +14408,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14465,7 +14465,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14564,7 +14564,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14620,7 +14620,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14659,7 +14659,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14715,7 +14715,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14783,7 +14783,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14840,7 +14840,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -14897,7 +14897,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:34 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml index aa5c314f1..1d38a6678 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_create_workspace.yaml @@ -113,7 +113,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: e4c0ebde039443f9a197e335489f5f41 + traceId: f17b1207b9038c2fdcd471da3d8ff3c8 headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml index 66092e45c..3f2995d20 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_put_declarative_workspace.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 09f883c11f2a558166341cb807849918 + traceId: cebe50069697973dc411ba2b8cd9c3e8 headers: Cache-Control: - max-age=5, private diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml index 1e365804d..22b8e5181 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_store_declarative_workspaces.yaml @@ -110,7 +110,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -153,7 +153,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -304,7 +304,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -316,7 +316,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -326,7 +326,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -377,7 +377,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -386,7 +386,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -396,7 +396,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -406,7 +406,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -416,7 +416,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -425,7 +425,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -434,7 +434,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -444,7 +444,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -454,7 +454,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -464,7 +464,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -474,7 +474,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -484,7 +484,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -494,7 +494,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -504,7 +504,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -515,7 +515,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -525,7 +525,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -535,7 +535,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -545,7 +545,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -554,7 +554,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -563,7 +563,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -572,7 +572,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -581,7 +581,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -590,7 +590,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -599,7 +599,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -665,7 +665,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -741,7 +741,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -820,7 +820,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -879,7 +879,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -936,7 +936,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -989,7 +989,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1064,7 +1064,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1121,7 +1121,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1220,7 +1220,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1276,7 +1276,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1315,7 +1315,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1371,7 +1371,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1439,7 +1439,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1496,7 +1496,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -1553,7 +1553,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2171,7 +2171,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2214,7 +2214,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2365,7 +2365,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2377,7 +2377,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2387,7 +2387,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2438,7 +2438,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2447,7 +2447,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2457,7 +2457,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2467,7 +2467,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2477,7 +2477,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2486,7 +2486,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2495,7 +2495,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2505,7 +2505,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2515,7 +2515,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2525,7 +2525,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2535,7 +2535,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2545,7 +2545,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2555,7 +2555,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2565,7 +2565,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2576,7 +2576,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2586,7 +2586,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2596,7 +2596,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2606,7 +2606,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2615,7 +2615,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2624,7 +2624,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2633,7 +2633,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2642,7 +2642,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2651,7 +2651,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2660,7 +2660,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2726,7 +2726,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2802,7 +2802,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2881,7 +2881,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2940,7 +2940,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -2997,7 +2997,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3050,7 +3050,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3125,7 +3125,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3182,7 +3182,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3281,7 +3281,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3337,7 +3337,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3376,7 +3376,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3432,7 +3432,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3500,7 +3500,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3557,7 +3557,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user @@ -3614,7 +3614,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:33 + createdAt: 2026-04-02 13:23 createdBy: id: admin type: user diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml index 88a6defa4..fa915922a 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/demo_translate_workspace.yaml @@ -115,7 +115,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -158,7 +158,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -308,7 +308,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -320,7 +320,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -330,7 +330,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -381,7 +381,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -390,7 +390,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -400,7 +400,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -410,7 +410,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -420,7 +420,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -429,7 +429,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -438,7 +438,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -448,7 +448,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -458,7 +458,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -468,7 +468,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -478,7 +478,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -488,7 +488,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -498,7 +498,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -508,7 +508,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -519,7 +519,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -529,7 +529,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -539,7 +539,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -549,7 +549,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -558,7 +558,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -567,7 +567,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -576,7 +576,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -585,7 +585,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -594,7 +594,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -603,7 +603,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -669,7 +669,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -745,7 +745,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -824,7 +824,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -883,7 +883,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -940,7 +940,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -993,7 +993,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1068,7 +1068,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1125,7 +1125,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1224,7 +1224,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1280,7 +1280,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1319,7 +1319,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1375,7 +1375,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1443,7 +1443,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1500,7 +1500,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -1557,7 +1557,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2208,7 +2208,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2251,7 +2251,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2401,7 +2401,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2413,7 +2413,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2423,7 +2423,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2474,7 +2474,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2483,7 +2483,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2493,7 +2493,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2503,7 +2503,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2513,7 +2513,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2522,7 +2522,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2531,7 +2531,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2541,7 +2541,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2551,7 +2551,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2561,7 +2561,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2571,7 +2571,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2581,7 +2581,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2591,7 +2591,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2601,7 +2601,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2612,7 +2612,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2622,7 +2622,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2632,7 +2632,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2642,7 +2642,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2651,7 +2651,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2660,7 +2660,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2669,7 +2669,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2678,7 +2678,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2687,7 +2687,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2696,7 +2696,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2762,7 +2762,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2838,7 +2838,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2917,7 +2917,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -2976,7 +2976,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3033,7 +3033,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3086,7 +3086,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3161,7 +3161,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3218,7 +3218,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3317,7 +3317,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3373,7 +3373,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3412,7 +3412,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3468,7 +3468,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3536,7 +3536,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3593,7 +3593,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -3650,7 +3650,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4098,7 +4098,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 6fa2be11508df59dc9c70afe3df71b8c + traceId: 1a8860e011961af2e7735c0845c5e45b headers: Cache-Control: - max-age=5, private @@ -4386,7 +4386,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4429,7 +4429,7 @@ interactions: type: dashboardPlugin version: '2' version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4579,7 +4579,7 @@ interactions: type: IDashboardLayoutSection type: IDashboardLayout version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4591,7 +4591,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4601,7 +4601,7 @@ interactions: - content: url: https://www.example.com version: '2' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4652,7 +4652,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4661,7 +4661,7 @@ interactions: - content: format: '#,##0' maql: SELECT COUNT({attribute/order_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4671,7 +4671,7 @@ interactions: format: '#,##0' maql: 'SELECT {metric/amount_of_active_customers} WHERE (SELECT {metric/revenue} BY {attribute/customer_id}) > 10000 ' - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4681,7 +4681,7 @@ interactions: format: '#,##0.00' maql: SELECT {metric/amount_of_orders} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4691,7 +4691,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/spend}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4700,7 +4700,7 @@ interactions: - content: format: $#,##0 maql: SELECT SUM({fact/price}*{fact/quantity}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4709,7 +4709,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / {metric/total_revenue} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4719,7 +4719,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4729,7 +4729,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/customer_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4739,7 +4739,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10_percent}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4749,7 +4749,7 @@ interactions: format: '#,##0.0%' maql: "SELECT\n (SELECT {metric/revenue} WHERE (SELECT {metric/revenue_top_10}\ \ BY {attribute/product_id}) > 0)\n /\n {metric/revenue}" - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4759,7 +4759,7 @@ interactions: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY {attribute/products.category}, ALL OTHER) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4768,7 +4768,7 @@ interactions: - content: format: '#,##0.0%' maql: SELECT {metric/revenue} / (SELECT {metric/revenue} BY ALL {attribute/product_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4778,7 +4778,7 @@ interactions: format: $#,##0 maql: SELECT {metric/order_amount} WHERE NOT ({label/order_status} IN ("Returned", "Canceled")) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4788,7 +4788,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Clothing") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4798,7 +4798,7 @@ interactions: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ( "Electronics") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4807,7 +4807,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Home") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4816,7 +4816,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE {label/products.category} IN ("Outdoor") - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4825,7 +4825,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4834,7 +4834,7 @@ interactions: - content: format: $#,##0.0 maql: SELECT {metric/revenue} / {metric/campaign_spend} - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4843,7 +4843,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4852,7 +4852,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} WHERE TOP(10%) OF ({metric/revenue}) - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4861,7 +4861,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/revenue} BY ALL OTHER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4870,7 +4870,7 @@ interactions: - content: format: $#,##0 maql: SELECT {metric/total_revenue} WITHOUT PARENT FILTER - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -4936,7 +4936,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5012,7 +5012,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5091,7 +5091,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5150,7 +5150,7 @@ interactions: stackMeasuresToPercent: true version: '2' visualizationUrl: local:area - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5207,7 +5207,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:treemap - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5260,7 +5260,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:donut - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5335,7 +5335,7 @@ interactions: visible: false version: '2' visualizationUrl: local:column - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5392,7 +5392,7 @@ interactions: enabled: true version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5491,7 +5491,7 @@ interactions: direction: asc version: '2' visualizationUrl: local:table - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5547,7 +5547,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:line - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5586,7 +5586,7 @@ interactions: properties: {} version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5642,7 +5642,7 @@ interactions: min: '0' version: '2' visualizationUrl: local:scatter - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5710,7 +5710,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5767,7 +5767,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -5824,7 +5824,7 @@ interactions: position: bottom version: '2' visualizationUrl: local:bar - createdAt: 2026-04-01 14:35 + createdAt: 2026-04-02 13:24 createdBy: id: admin type: user @@ -6362,7 +6362,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 798390d35cb5ab9b22e642de58f71fa1 + traceId: 7015e386eae4d9845aacf25581f942c3 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -6479,7 +6479,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 1a364b252d8c4935522cd526cce8ed29 + traceId: bb83673b8a4d6bca92da47f7192fe923 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml index 5976e1d74..dac51eea0 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/list_workspace_settings.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 3a8217578cb958457a39a08a1bcb3c44 + traceId: 974ff7b61da2e362badb8b3661397f5e headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -138,7 +138,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 42784f246b7d7774fbf9f381990ac466 + traceId: eac27b50a9858f27a32820de4ac07805 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/update_workspace_setting.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/update_workspace_setting.yaml index d1216827b..7914573a1 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/update_workspace_setting.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/update_workspace_setting.yaml @@ -20,7 +20,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: cd385e3c99e80490e41f45e0d2da7dab + traceId: 737848bd15d5ff02b3da52b9c9848b21 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_for_user_group.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_for_user_group.yaml index 4ef4be1d9..307ed1ae5 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_for_user_group.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_for_user_group.yaml @@ -70,7 +70,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 40080fca98880a9730583f2087d203de + traceId: 4f76887ec7283c2b5245e152a3f2eb60 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_life_cycle.yaml b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_life_cycle.yaml index f6bb2a1fd..cb15096bf 100644 --- a/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_life_cycle.yaml +++ b/packages/gooddata-sdk/tests/catalog/fixtures/workspaces/user_data_filters_life_cycle.yaml @@ -70,7 +70,7 @@ interactions: to access it. status: 404 title: Not Found - traceId: 3a7524d96568eebbe884f6d667f43021 + traceId: b89dcda71a126ae14710286116bfb4fc headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml index 69a17fa44..629492e45 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv.yaml @@ -102,7 +102,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 55ced1d67692055dfcb09c5b020fdee0a1d94190:f4bca63dec753953547db471fe58063ce56a949acc8ffc1ba2f18b04c6b0bcea + executionResult: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -147,7 +147,7 @@ interactions: price: format: '' title: Sum Of Price - executionResult: 55ced1d67692055dfcb09c5b020fdee0a1d94190:f4bca63dec753953547db471fe58063ce56a949acc8ffc1ba2f18b04c6b0bcea + executionResult: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c fileName: test_csv format: CSV headers: @@ -166,7 +166,7 @@ interactions: response: body: string: - exportResult: f37fa66aa7477cbb2280696efc8cf0864d3e8364 + exportResult: 3557eaf9dc1c4e94c8c542a4ebe30b5462b644cf headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -209,7 +209,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/f37fa66aa7477cbb2280696efc8cf0864d3e8364 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3557eaf9dc1c4e94c8c542a4ebe30b5462b644cf response: body: string: '' @@ -253,7 +253,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/f37fa66aa7477cbb2280696efc8cf0864d3e8364 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3557eaf9dc1c4e94c8c542a4ebe30b5462b644cf response: body: string: "\uFEFF\"State\",\"Custom Title Region\",\"Sum Of Price\",\"Order\ diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml index aa5e67706..44e10f4ff 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_csv_by_visualization_id.yaml @@ -89,7 +89,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:26 title: Customers Trend id: customers_trend meta: @@ -136,7 +136,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:26 title: '# of Active Customers' id: amount_of_active_customers links: @@ -146,7 +146,7 @@ interactions: content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:26 title: Revenue per Customer id: revenue_per_customer links: @@ -218,7 +218,7 @@ interactions: response: body: string: - exportResult: 3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + exportResult: e6a127b81b378d116ac248b33dd8d9d42033e593 headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -261,7 +261,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593 response: body: string: '' @@ -305,7 +305,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593 response: body: string: '' @@ -349,7 +349,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593 response: body: string: '' @@ -393,7 +393,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593 response: body: string: '' @@ -437,51 +437,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 - response: - body: - string: '' - headers: - Cache-Control: - - no-cache, no-store, max-age=0, must-revalidate - Content-Length: - - '0' - DATE: *id001 - Expires: - - '0' - Pragma: - - no-cache - Referrer-Policy: - - no-referrer - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - Vary: - - Accept-Encoding - - Origin - - Access-Control-Request-Method - - Access-Control-Request-Headers - X-Content-Type-Options: - - nosniff - X-GDC-TRACE-ID: *id001 - X-Xss-Protection: - - 1; mode=block - status: - code: 202 - message: Accepted - - request: - body: null - headers: - Accept: - - application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, - application/zip, text/csv, text/html - Accept-Encoding: - - br, gzip, deflate - X-GDC-VALIDATE-RELATIONS: - - 'true' - X-Requested-With: - - XMLHttpRequest - method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/3985b644b3f300e3ef45f0cd92767ed1bae4eda4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/e6a127b81b378d116ac248b33dd8d9d42033e593 response: body: string: "\uFEFF\"Date - Month/Year\",\"2025-04\",\"2025-05\",\"2025-06\",\"\ diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml index eb00cb13e..ab652e768 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel.yaml @@ -102,7 +102,7 @@ interactions: name: Order Amount localIdentifier: dim_1 links: - executionResult: 0b139b1b8d35fabad8a39379486307064d07ebc4:f9731994af724fb69d0fabf08f6ed9363a387483cceab3bb62300da3a07c5865 + executionResult: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -147,7 +147,7 @@ interactions: price: format: '' title: Sum Of Price - executionResult: 0b139b1b8d35fabad8a39379486307064d07ebc4:f9731994af724fb69d0fabf08f6ed9363a387483cceab3bb62300da3a07c5865 + executionResult: f433d8e4f2d105f4a329d4683ca39c3306bbb8d9:3b5f2e8c17f7677468017d08f86dbd0ac2115fa479d45768df7da844acacd48c fileName: test_xlsx format: XLSX headers: @@ -166,7 +166,7 @@ interactions: response: body: string: - exportResult: 84385825b9e25262db47072340b7c126d9922be1 + exportResult: f0a7709174cdc2944c8d6bab6910d6677117b24f headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -209,7 +209,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/84385825b9e25262db47072340b7c126d9922be1 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/f0a7709174cdc2944c8d6bab6910d6677117b24f response: body: string: '' @@ -253,7 +253,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/84385825b9e25262db47072340b7c126d9922be1 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/f0a7709174cdc2944c8d6bab6910d6677117b24f response: body: string: "PK\x03\x04\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\ @@ -536,60 +536,60 @@ interactions: tni\uFFFDe\uFFFD\uFFFD\uFFFD1j\x11\uFFFD\u058Ax_\uFFFD\uFFFD9\uFFFD\uFFFD\ \uFFFD\uFFFDg\uFFFD{sg{\x06_{g\uFFFD\uFFFD^.Q[;\uFFFD\u4AE5?\uFFFD\uFFFD\ \uFFFD>\uFFFD\u0781\uFFFD\u0484)Y\uFFFDMz\0G\uFFFD\uFFFD\uFFFD/\x03\uFFFD\ - c/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0t\uFFFD\uFFFD\x18%\x01\ - \0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDj\uFFFD0\x10\uFFFD\ - \uFFFD}\n\uFFFD\uFFFD-\uFFFD1\uFFFD\x15\uFFFD\x03m\u0269\uFFFDBSZz\x13\uFFFD\ - &\x11\uFFFD~\uFFFD\uFFFD:y\uFFFD*N\uFFFD$\uFFFDS\uFFFD\uFFFD\uFFFD\uFFFD\ - vvQ=\uFFFD\uFFFD.\uFFFD\x05\x1F\uFFFD5\r\uFFFD\x05A\x19\x18a\uFFFD2\uFFFD\ - \x06\uFFFD/\uFFFD\uFFFD=\uFFFDB\uFFFDF\uFFFD\uFFFD\x1Ah\uFFFD\x0E\x02\uFFFD\ - \uFFFDw\uFFFDpLX\x0F\uFFFD\uFFFD:\uFFFDQA\uFFFD\x12\uFFFD\x04&\\\uFFFD61:\uFFFD\ - q\x10\e\uFFFD<\x14\uFFFDa\uFFFD\uFFFD\uFFFD^\uFFFDJ\uFFFD\u018E\uFFFDo\uFFFD\ - \x06\\\x122\uFFFD\x1A\"\uFFFD&O\uFFFD\uFFFD9jKRNsR\uFFFD\ - .i\uFFFD*\uFFFD\uFFFD\uFFFD\uFFFD~\uFFFDU\uFFFD\x19\uFFFD\uFFFDC\uFFFDM<\x01\ - \x0E\uFFFD\uFFFD?A\uFFFD\aPK\x03\x04\x14\0\0\0\b\0\0\0?\0\x04qEc{\x01\0\0\ - \x13\x03\0\0\x10\0\0\0docProps/app.xml\uFFFDR\uFFFDN\uFFFD0\x10\uFFFD\uFFFD\ - \x15\uFFFD\uFFFD\uFFFDi\uFFFDZ\uFFFD\uFFFD1Z\uFFFD]\uFFFD\uFFFD\uFFFDJ-p\\\ - \x19g\uFFFDXul\uFFFD3D)_\uFFFD\uFFFD\uFFFD!\uFFFD=\uFFFD\u04DB7O\uFFFD\uFFFD\ - 3\x16\uFFFD]c\uFFFD\x16\"\x1A\uFFFD\n6\uFFFD\uFFFD,\x03\uFFFD}i\u073E`\uFFFD\ - \uFFFD?\uFFFD7,CR\uFFFDT\uFFFD;(\uFFFD\x11\uFFFD\uFFFD\uFFFD+\uFFFD\uFFFD\ - >@$\x03\uFFFD%\a\uFFFD\x05\uFFFD\uFFFD\x92s\uFFFD54\ng\uFFFD\uFFFDR\uFFFD\ - \uFFFDQ\uFFFD\u02B8\u7FAA\uFFFD\uFFFD;\uFFFD_\ep\uFFFD\x17y\uFFFD\uFFFD\ - CG\uFFFDJ(\uFFFD\uFFFDh\uFFFDN\uFFFD\u02D6\uFFFDkZz\uFFFD\uFFFD\xE7\uFFFD\ - 1$?)~\uFFFD`\uFFFDV\uFFFD\x1E)\uF34E\x1E}E\uFFFD\uFFFDN\uFFFD\x15|\uFFFD\ - \x14\uFFFDh\v\uFFFD5\x1A:\uFFFD\\\uFFFDi)\uFFFDZYX%cY)\uFFFD \uFFFD\a!\u05A0\ - \uFFFD\uFFFDm\uFFFD\uFFFD(EK\uFFFD\x164\uFFFD\uFFFD\uFFFDyKS[\uFFFD\uFFFD\ - E!\uFFFDq\n\u05AAh\uFFFD#v\uFFFD\uFFFD\uFFFD\x01\u06C0\x14\u5CCF\a\uFFFD\ - \x01\b\x05\x1F\uFFFD\x01N\uFFFDSl~\uFFFD\uFFFD H\uFFFDR\uFFFD\uFFFD \t_F\uFFFD\ - \x19\uFFFD\uFFFD\x0F\uFFFDFE\uFFFDO\uFFFD\uFFFD4\uFFFDM2\x12 \uFFFD\uFFFD\ - ,v_\"\uFFFD/\uFFFDd\uFFFD\uFFFDMP.\u0350\uFFFD\uFFFDq\a|\f;\x7F\uFFFD\b\uFFFD\ - \x13\uFFFD$\u0176V\x11\u02B4\uFFFDq\uFFFD#!\uFFFD)Z\uFFFD\uFFFD~U+\uFFFD\ - \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDt\uFFFD\uFFFDr\uFFFD\uFFFD\uFFFD\ - \uFFFD\fk?s\uFFFD\x7F|g\uFFFD\x0EPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\ - a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\0\0\0\0\ - [Content_Types].xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\uFFFDI\uFFFD\uFFFD\ - \0\0\0K\x02\0\0\v\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x01\0\0_rels/.relsPK\x01\ - \x02\x14\x03\x14\0\0\0\b\0\0\0?\0Du[\uFFFD\uFFFD\0\0\0\uFFFD\x02\0\0\x1A\ - \0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x02\0\0xl/_rels/workbook.xml.relsPK\x01\ - \x02\x14\x03\x14\0\0\0\b\0\0\0?\0\f\uFFFD\uFFFD\fR\a\0\0 #\0\0\x18\0\0\0\ - \0\0\0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\x03\0\0xl/worksheets/sheet1.xmlPK\x01\ - \x02\x14\x03\x14\0\0\0\b\0\0\0?\0\b\uFFFD\uFFFD\uFFFDL\x01\0\0)\x02\0\0\x0F\ - \0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD:\v\0\0xl/workbook.xmlPK\x01\x02\x14\x03\ - \x14\0\0\0\b\0\0\0?\0\uFFFD\xC2\uFFFD\x13\x02\0\00\x06\0\0\x14\0\0\0\0\0\ - \0\0\0\0\0\0\uFFFD\uFFFD\uFFFD\f\0\0xl/sharedStrings.xmlPK\x01\x02\x14\x03\ - \x14\0\0\0\b\0\0\0?\0]\uFFFD:4\uFFFD\x02\0\0\uFFFD\x0F\0\0\r\0\0\0\0\0\0\ - \0\0\0\0\0\uFFFD\uFFFD\uFFFD\x0E\0\0xl/styles.xmlPK\x01\x02\x14\x03\x14\0\ - \0\0\b\0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0\0\0\0\0\0\0\0\ - \0\uFFFD\uFFFD\x02\x12\0\0xl/theme/theme1.xmlPK\x01\x02\x14\x03\x14\0\0\0\ - \b\0\0\0?\0t\uFFFD\uFFFD\x18%\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\ - \uFFFD\uFFFD\uFFFD\x17\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\ - \0\0\0?\0\x04qEc{\x01\0\0\x13\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\ - 7\x19\0\0docProps/app.xmlPK\x05\x06\0\0\0\0\n\0\n\0\uFFFD\x02\0\0\uFFFD\x1A\ - \0\0\0\0" + c/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0\r\uFFFD\uFFFDo%\x01\0\ + \0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFDj\uFFFD0\x10E\uFFFD\ + \uFFFD\n\uFFFD\uFFFD-\uFFFDiC\x11\uFFFD\x03m\u026A\uFFFDB]Z\uFFFD\x13\uFFFD\ + $\x11\uFFFD\x1EHj\uFFFD\uFFFD}\x15\uFFFD\uFFFD\uFFFDW]\uFFFD\uFFFD3w\x06\ + \x15\uFFFD\uFFFDl\uFFFD_\uFFFDNhU\uFFFD,IQ\x04\uFFFDi.\u053ED\x1F\uFFFD\ + :~D\uFFFD\uFFFDTq\uFFFDh\x05%:\uFFFDC\uFFFD\uFFFD`\uFFFD0m\uFFFD\uFFFDj\x03\ + \uFFFD\vpQ\0)G\uFFFD)\uFFFD\uFFFD{C0v\uFFFD\0\uFFFD\uFFFD$8T\x10w\uFFFD\ + J\uFFFDCi\uFFFD\uFFFDP\uFFFDM\uFFFD\uFFFD\uFFFD4]b\t\uFFFDr\uFFFD)>\x03\ + c3\x11\u0440\uFFFDlB\uFFFD\x1F\uFFFDt\0\uFFFD04 Ay\uFFFD\uFFFD$\uFFFD\x17\ + \uFFFD\a+\uFFFDlC\uFFFD\\9\uFFFD\uFFFD'\x03\uFFFD\uFFFDQ\uFFFD\uFFFDG'&c\u06F6\ + I\uFFFD\uFFFD!\x7F\uFFFD\uFFFD6\uFFFD\uFFFD\u076A\uFFFDP\uFFFDS1@U\uFFFD\ + \x19a\x16\uFFFD\u05F6*\uFFFDu\x11\x0E\uFFFDP\uFFFD7\uFFFD\uFFFD;\x01\uFFFD\ + \uFFFD\x14\uFFFD\uFFFD\uFFFDa\uFFFD\uFFFD\x0Fx\x14\x02\uFFFD>\uFFFD|.\uFFFD\ + _\uFFFD5\uFFFD\uFFFD4_\uFFFD\uFFFD}\uFFFD\uFFFDu\uFFFD \uFFFD\uFFFDd\x0F\ + \uFFFD\uFFFD\u021B\uFFFD\vP\x0EC\uFFFDM\x1C\x01}\uFFFD\uFFFDOP\uFFFD\x01\ + PK\x03\x04\x14\0\0\0\b\0\0\0?\0\x04qEc{\x01\0\0\x13\x03\0\0\x10\0\0\0docProps/app.xml\uFFFD\ + R\uFFFDN\uFFFD0\x10\uFFFD\uFFFD\x15\uFFFD\uFFFD\uFFFDi\uFFFDZ\uFFFD\uFFFD\ + 1Z\uFFFD]\uFFFD\uFFFD\uFFFDJ-p\\\x19g\uFFFDXul\uFFFD3D)_\uFFFD\uFFFD\uFFFD\ + !\uFFFD=\uFFFD\u04DB7O\uFFFD\uFFFD3\x16\uFFFD]c\uFFFD\x16\"\x1A\uFFFD\n\ + 6\uFFFD\uFFFD,\x03\uFFFD}i\u073E`\uFFFD\uFFFD?\uFFFD7,CR\uFFFDT\uFFFD;(\uFFFD\ + \x11\uFFFD\uFFFD\uFFFD+\uFFFD\uFFFD>@$\x03\uFFFD%\a\uFFFD\x05\uFFFD\uFFFD\ + \x92s\uFFFD54\ng\uFFFD\uFFFDR\uFFFD\uFFFDQ\uFFFD\u02B8\u7FAA\uFFFD\uFFFD\ + ;\uFFFD_\ep\uFFFD\x17y\uFFFD\uFFFDCG\uFFFDJ(\uFFFD\uFFFDh\uFFFDN\uFFFD\u02D6\ + \uFFFDkZz\uFFFD\uFFFD\xE7\uFFFD1$?)~\uFFFD`\uFFFDV\uFFFD\x1E)\uF34E\x1E\ + }E\uFFFD\uFFFDN\uFFFD\x15|\uFFFD\x14\uFFFDh\v\uFFFD5\x1A:\uFFFD\\\uFFFD\ + i)\uFFFDZYX%cY)\uFFFD \uFFFD\a!\u05A0\uFFFD\uFFFDm\uFFFD\uFFFD(EK\uFFFD\x16\ + 4\uFFFD\uFFFD\uFFFDyKS[\uFFFD\uFFFDE!\uFFFDq\n\u05AAh\uFFFD#v\uFFFD\uFFFD\ + \uFFFD\x01\u06C0\x14\u5CCF\a\uFFFD\x01\b\x05\x1F\uFFFD\x01N\uFFFDSl~\uFFFD\ + \uFFFD H\uFFFDR\uFFFD\uFFFD \t_F\uFFFD\x19\uFFFD\uFFFD\x0F\uFFFDFE\uFFFD\ + O\uFFFD\uFFFD4\uFFFDM2\x12 \uFFFD\uFFFD,v_\"\uFFFD/\uFFFDd\uFFFD\uFFFDMP.\u0350\ + \uFFFD\uFFFDq\a|\f;\x7F\uFFFD\b\uFFFD\x13\uFFFD$\u0176V\x11\u02B4\uFFFD\ + q\uFFFD#!\uFFFD)Z\uFFFD\uFFFD~U+\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ + \uFFFDt\uFFFD\uFFFDr\uFFFD\uFFFD\uFFFD\uFFFD\fk?s\uFFFD\x7F|g\uFFFD\x0E\ + PK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\ + \0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\0\0\0\0[Content_Types].xmlPK\x01\x02\x14\ + \x03\x14\0\0\0\b\0\0\0?\0\uFFFDI\uFFFD\uFFFD\0\0\0K\x02\0\0\v\0\0\0\0\0\0\ + \0\0\0\0\0\uFFFD\uFFFD\uFFFD\x01\0\0_rels/.relsPK\x01\x02\x14\x03\x14\0\0\ + \0\b\0\0\0?\0Du[\uFFFD\uFFFD\0\0\0\uFFFD\x02\0\0\x1A\0\0\0\0\0\0\0\0\0\0\ + \0\uFFFD\uFFFD\uFFFD\x02\0\0xl/_rels/workbook.xml.relsPK\x01\x02\x14\x03\ + \x14\0\0\0\b\0\0\0?\0\f\uFFFD\uFFFD\fR\a\0\0 #\0\0\x18\0\0\0\0\0\0\0\0\0\ + \0\0\uFFFD\uFFFD\uFFFD\x03\0\0xl/worksheets/sheet1.xmlPK\x01\x02\x14\x03\ + \x14\0\0\0\b\0\0\0?\0\b\uFFFD\uFFFD\uFFFDL\x01\0\0)\x02\0\0\x0F\0\0\0\0\0\ + \0\0\0\0\0\0\uFFFD\uFFFD:\v\0\0xl/workbook.xmlPK\x01\x02\x14\x03\x14\0\0\ + \0\b\0\0\0?\0\uFFFD\xC2\uFFFD\x13\x02\0\00\x06\0\0\x14\0\0\0\0\0\0\0\0\0\ + \0\0\uFFFD\uFFFD\uFFFD\f\0\0xl/sharedStrings.xmlPK\x01\x02\x14\x03\x14\0\ + \0\0\b\0\0\0?\0]\uFFFD:4\uFFFD\x02\0\0\uFFFD\x0F\0\0\r\0\0\0\0\0\0\0\0\0\ + \0\0\uFFFD\uFFFD\uFFFD\x0E\0\0xl/styles.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\ + \0\0\0?\0\x18\uFFFDFT\uFFFD\x05\0\0R\e\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\uFFFD\ + \uFFFD\x02\x12\0\0xl/theme/theme1.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0\ + ?\0\r\uFFFD\uFFFDo%\x01\0\0P\x02\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD\ + \uFFFD\x17\0\0docProps/core.xmlPK\x01\x02\x14\x03\x14\0\0\0\b\0\0\0?\0\x04\ + qEc{\x01\0\0\x13\x03\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\uFFFD\uFFFD7\x19\0\0\ + docProps/app.xmlPK\x05\x06\0\0\0\0\n\0\n\0\uFFFD\x02\0\0\uFFFD\x1A\0\0\0\ + \0" headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate diff --git a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml index da564f443..9236304ca 100644 --- a/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml +++ b/packages/gooddata-sdk/tests/export/fixtures/test_export_excel_by_visualization_id.yaml @@ -89,7 +89,7 @@ interactions: rotation: auto version: '2' visualizationUrl: local:combo2 - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:26 title: Customers Trend id: customers_trend meta: @@ -136,7 +136,7 @@ interactions: content: format: '#,##0' maql: SELECT COUNT({attribute/customer_id},{attribute/order_line_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:26 title: '# of Active Customers' id: amount_of_active_customers links: @@ -146,7 +146,7 @@ interactions: content: format: $#,##0.0 maql: SELECT AVG(SELECT {metric/revenue} BY {attribute/customer_id}) - createdAt: 2026-04-01 14:36 + createdAt: 2026-04-02 13:26 title: Revenue per Customer id: revenue_per_customer links: @@ -218,7 +218,7 @@ interactions: response: body: string: - exportResult: 90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 + exportResult: 5a39d28ab92dd66b4efee732e42bb031e39fb6ea headers: Cache-Control: - no-cache, no-store, max-age=0, must-revalidate @@ -261,7 +261,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/5a39d28ab92dd66b4efee732e42bb031e39fb6ea response: body: string: '' @@ -305,7 +305,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/5a39d28ab92dd66b4efee732e42bb031e39fb6ea response: body: string: '' @@ -349,7 +349,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/5a39d28ab92dd66b4efee732e42bb031e39fb6ea response: body: string: '' @@ -393,7 +393,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/5a39d28ab92dd66b4efee732e42bb031e39fb6ea response: body: string: '' @@ -437,7 +437,7 @@ interactions: X-Requested-With: - XMLHttpRequest method: GET - uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/90c85d1cc5d7ccf0180c81c3847d183aca5c24a4 + uri: http://localhost:3000/api/v1/actions/workspaces/demo/export/tabular/5a39d28ab92dd66b4efee732e42bb031e39fb6ea response: body: string: "PK\x03\x04\x14\0\0\0\b\0\0\0?\0a]I:O\x01\0\0\uFFFD\x04\0\0\x13\0\0\ @@ -652,48 +652,47 @@ interactions: \uFFFD9\uFFFD\uFFFD\uFFFD\uFFFDg\uFFFD{sg{\x06_{g\uFFFD\uFFFD^.Q[;\uFFFD\ \u4AE5?\uFFFD\uFFFD\uFFFD>\uFFFD\u0781\uFFFD\u0484)Y\uFFFDMz\0G\uFFFD\uFFFD\ \uFFFD/\x03\uFFFDc/H\uFFFD\uFFFD\x06PK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFD\ - \uFFFDs\uFFFD%\x01\0\0P\x02\0\0\x11\0\0\0docProps/core.xml\uFFFD\uFFFD\uFFFD\ - j\uFFFD0\x10\uFFFD\uFFFD}\n\uFFFD\uFFFD-\uFFFD\tI\x11\uFFFD\x03m\u0269\uFFFD\ - BSZr\x13\uFFFD\uFFFD\x11\uFFFD~\uFFFD\uFFFD:y\uFFFD\u028E\uFFFD$\uFFFDS\uFFFD\ - \uFFFD\uFFFD\uFFFDvvQ\uFFFD:\uFFFD&\uFFFD\x05\uFFFDV%\u0292\x14E\uFFFD\uFFFD\ - \uFFFDB\uFFFD%\uFFFD\u062E\uFFFDG\x149O\x15\uFFFD\uFFFDVP\uFFFD\x138\uFFFD\ - \uFFFD\x1E\nf\b\uFFFD\x16\u07AC6`\uFFFD\0\x17\x05\uFFFDr\uFFFD\uFFFD\x12\ - \x1D\uFFFD7\x04c\uFFFD\x0E \uFFFDK\uFFFDC\x05q\uFFFD\uFFFD\uFFFD>\uFFFD\uFFFD\ - \u0186\uFFFDoZ\x03\uFFFD\uFFFDt\uFFFD%x\u02A9\uFFFD\uFFFD\x03\uFFFDf$\uFFFD\ - \x01\uFFFD\u06484?\uFFFD\uFFFD\x01\uFFFDah@\uFFFD\uFFFD\x0EgI\uFFFD\uFFFD\ - ^\x0FV\uFFFD\u0246^\uFFFDqJ\uFFFDO\x06&\uFFFD\x17qt\x1F\uFFFD\x18\uFFFD\ - m\uFFFD&\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\x19\uFFFD\u06BC\uFFFD\uFFFD\uFFFD\ - \uFFFDBu\uFFFDb\uFFFD\uFFFD\uFFFD3\uFFFD,P\uFFFDmU\uFFFD\uFFFD\"\x1C\uFFFD\ - \uFFFD\uFFFDo\x89\uFFFD\x02\uFFFD\uFFFD)\uFFFD\x13o\uFFFD\"\uFFFD>\uFFFD\ - Q\b@\uFFFDq/\uFFFD\uFFFD\uFFFD\uFFFDe\uFFFDFU\uFFFD\uFFFD8\uFFFD\uFFFDi\uFFFD\ - \uFFFD\uFFFDd\uFFFD$\uFFFDr\u05CD\uFFFD\uFFFD\x02\uFFFD0\uFFFD\uFFFD\uFFFD\ - \v\uFFFD\uFFFD\uFFFD\uFFFD\x13T\x7FPK\x03\x04\x14\0\0\0\b\0\0\0?\0\uFFFD\ - \uFFFD2G~\x01\0\0\x19\x03\0\0\x10\0\0\0docProps/app.xml\uFFFDR\uFFFDN\uFFFD\ - 0\x10\uFFFD\uFFFD\x15\uFFFD\uFFFD\uFFFDi\uFFFD\uFFFDS\uFFFD\x18\uFFFD\x02\ - \uFFFD\uFFFD\u04EB\uFFFD\0g\uFFFDl\x1A\v\u01F6\uFFFD\u06E8}_\uFFFD\uFFFD\ - \uFFFD!\x05N\uFFFD4;;\x1AOvW\uFFFD\uFFFD[\uFFFDu\x10\uFFFDxW\uFFFD\uFFFD\ - ,g\x198\uFFFD+\uFFFD\x05{.\x1F.\uFFFD\uFFFD\fI\uFFFDJY\uFFFD`\a@v#/\uFFFD\ - :\uFFFD\0\uFFFD\f`\uFFFD\x1C\x1C\x16\uFFFD!\nK\uFFFDQ7\uFFFD*\uFFFD\uFFFD\ - \uFFFDK\uFFFD\uFFFD\uFFFDVQ*\uFFFD\uFFFD\uFFFD6\x1A\uFFFD\u07B5\uFFFD\uFFFD\ - /\uFFFD\uFFFD\uFFFD\xDE\uFFFDUP]\uFFFD\u0450\x1D\x1D\uFFFD\x1D\uFFFD\u05B4\ - \uFFFD\u03C7/\uFFFD!$?)nC\uFFFDF+J?)\uFFFD\x1A\x1D=\uFFFD\uFFFD\uFFFD\uFFFD\ - \uFFFD\x06+\uFFFD\uFFFD)\uFFFD\uFFFD\x06\uFFFD.\x1A:\uFFFD\\\uFFFDi)6ZYX%cY+\uFFFD\ - \ \uFFFD'!\x1EA\uFFFD3[+\x13Q\uFFFD\uFFFD\uFFFD\x1Dh\uFFFD1C\uFFFD?Mm\uFFFD\ - \uFFFD7\uFFFD\uFFFD\uFFFD)X\uFFFD\uFFFDQ\uFFFD\uFFFDQv,\x06l\x03R\uFFFD\uFFFD\ - >\uFFFDc\x03@(\uFFFDH\x0Ep\uFFFD\uFFFDbs%\uFFFD \uFFFDs!\x1F\uFFFD$|\x1E\ - \uFFFD4d\x01\uFFFD\uFFFDk\x15\uFFFD\uFFFD\uFFFDi\uFFFD!\x03\uFFFDd\\\uFFFD\ - |\uFFFD\uFFFD&+cZ\u07F7\uFFFD\uFFFD'\uFFFD<\uFFFD\uFFFDmP.M\uFFFD\uFFFD\uFFFD\ - \u0278w|\x0E\uFFFD\uFFFDS\x04\uFFFD\uFFFD\uFFFD\uFFFDb\u04E8\bUZ\uFFFD8\uFFFD\ - \uFFFD\x10\uFFFD)`\uFFFD\uFFFD~\uFFFD(\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\ - \uFFFD\uFFFDx\uFFFDr\uFFFD\uFFFD\uFFFD\uFFFD\e\uFFFD\x7F\uFFFD\x04\uFFFD\ - \uFFFDc\x03@(\uFFFDH\x0Ep\uFFFD\uFFFDbs%\uFFFD\ + \ \uFFFDs!\x1F\uFFFD$|\x1E\uFFFD4d\x01\uFFFD\uFFFDk\x15\uFFFD\uFFFD\uFFFD\ + i\uFFFD!\x03\uFFFDd\\\uFFFD|\uFFFD\uFFFD&+cZ\u07F7\uFFFD\uFFFD'\uFFFD<\uFFFD\ + \uFFFDmP.M\uFFFD\uFFFD\uFFFD\u0278w|\x0E\uFFFD\uFFFDS\x04\uFFFD\uFFFD\uFFFD\ + \uFFFDb\u04E8\bUZ\uFFFD8\uFFFD\uFFFD\x10\uFFFD)`\uFFFD\uFFFD~\uFFFD(\uFFFD\ + \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDx\uFFFDr\uFFFD\uFFFD\uFFFD\uFFFD\ + \e\uFFFD\x7F\uFFFD\x04\uFFFD Date: Thu, 2 Apr 2026 15:34:55 +0200 Subject: [PATCH 6/6] feat(tests): improve VCR normalization per PR review Address PR #1507 review comments: - Add client_secret and private_key_passphrase to _ENV_SPECIFIC_BODY_FIELDS - Switch from stdlib json to orjson for faster JSON processing - Add _normalization_configured guard to prevent silent no-op recording risk: low --- packages/tests-support/pyproject.toml | 1 + .../src/tests_support/vcrpy_utils.py | 50 ++++++++++++++----- uv.lock | 2 + 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/packages/tests-support/pyproject.toml b/packages/tests-support/pyproject.toml index 2eb8cc1e5..b8a7ba984 100644 --- a/packages/tests-support/pyproject.toml +++ b/packages/tests-support/pyproject.toml @@ -5,6 +5,7 @@ description = "Tests support for GoodData Python SDK" requires-python = ">=3.10" version = "1.0.0" dependencies = [ + "orjson", "pyyaml>=6.0", "requests", ] diff --git a/packages/tests-support/src/tests_support/vcrpy_utils.py b/packages/tests-support/src/tests_support/vcrpy_utils.py index 8e7aa556a..6bfee86ea 100644 --- a/packages/tests-support/src/tests_support/vcrpy_utils.py +++ b/packages/tests-support/src/tests_support/vcrpy_utils.py @@ -1,13 +1,12 @@ # (C) 2022 GoodData Corporation from __future__ import annotations -import json import os import typing -from json import JSONDecodeError from typing import Any from urllib.parse import urlparse +import orjson import vcr import yaml from vcr.record_mode import RecordMode @@ -20,7 +19,15 @@ # Fields stripped from request bodies before VCR body matching. # These differ between local and staging environments but don't affect # the logical identity of a request. -_ENV_SPECIFIC_BODY_FIELDS = {"password", "token", "url", "username", "privateKey"} +_ENV_SPECIFIC_BODY_FIELDS = { + "password", + "token", + "url", + "username", + "privateKey", + "client_secret", + "private_key_passphrase", +} # Canonical (local) values — cassettes always use these. _CANONICAL_HOST = "http://localhost:3000" @@ -33,6 +40,7 @@ # Each entry is (source_string, replacement_string). # Ordered longest-first so more specific patterns match before substrings. _normalization_replacements: list[tuple[str, str]] = [] +_normalization_configured: bool = False def configure_normalization(test_config: dict[str, Any]) -> None: @@ -49,7 +57,7 @@ def configure_normalization(test_config: dict[str, Any]) -> None: rm -rf packages/gooddata-sdk/.tox uv cache clean tests-support --force """ - global _normalization_replacements + global _normalization_replacements, _normalization_configured replacements: list[tuple[str, str]] = [] parsed = urlparse(test_config.get("host", _CANONICAL_HOST)) @@ -99,6 +107,7 @@ def configure_normalization(test_config: dict[str, Any]) -> None: replacements.sort(key=lambda pair: len(pair[0]), reverse=True) _normalization_replacements = replacements + _normalization_configured = True def _apply_replacements(text: str) -> str: @@ -113,8 +122,8 @@ def _normalize_body(body: str | None) -> str: if not body: return body or "" try: - data = json.loads(body) - except (JSONDecodeError, TypeError): + data = orjson.loads(body) + except (orjson.JSONDecodeError, TypeError): return body def _strip(obj: Any) -> Any: @@ -124,7 +133,7 @@ def _strip(obj: Any) -> Any: return [_strip(item) for item in obj] return obj - return json.dumps(_strip(data), sort_keys=True) + return orjson.dumps(_strip(data), option=orjson.OPT_SORT_KEYS).decode("utf-8") def _body_matcher(r1: Any, r2: Any) -> None: @@ -174,13 +183,15 @@ def deserialize(self, cassette_string: str) -> dict[str, Any]: if isinstance(request_body, str) and request_body.startswith(" str: response_body = interaction["response"]["body"] if request_body is not None: try: - interaction["request"]["body"] = json.loads(request_body) - except (JSONDecodeError, UnicodeDecodeError): + interaction["request"]["body"] = orjson.loads(request_body) + except (orjson.JSONDecodeError, UnicodeDecodeError): # The response can be in XML interaction["request"]["body"] = request_body if response_body is not None and response_body["string"] != "": try: - interaction["response"]["body"]["string"] = json.loads(response_body["string"]) - except (JSONDecodeError, UnicodeDecodeError): + interaction["response"]["body"]["string"] = orjson.loads(response_body["string"]) + except (orjson.JSONDecodeError, UnicodeDecodeError): # these exceptions are expected while getting file content continue return yaml.dump(cassette_dict, Dumper=IndentDumper, sort_keys=True) @@ -213,6 +224,12 @@ def _normalize_uri(uri: str) -> str: def custom_before_request(request, headers_str: str = HEADERS_STR): + if not _normalization_configured and "OVERWRITE" in os.environ: + raise RuntimeError( + "VCR normalization not configured. " + "Ensure your test fixture depends on 'test_config' (directly or transitively) " + "so that configure_normalization() runs before cassette recording starts." + ) # Normalize URI to canonical host request.uri = _normalize_uri(request.uri) @@ -234,6 +251,13 @@ def custom_before_response( non_static_headers: list[str] | None = None, placeholder: list[str] | None = None, ): + if not _normalization_configured and "OVERWRITE" in os.environ: + raise RuntimeError( + "VCR normalization not configured. " + "Ensure your test fixture depends on 'test_config' (directly or transitively) " + "so that configure_normalization() runs before cassette recording starts." + ) + if non_static_headers is None: non_static_headers = NON_STATIC_HEADERS diff --git a/uv.lock b/uv.lock index cb9d80d13..2a81f2d4d 100644 --- a/uv.lock +++ b/uv.lock @@ -2500,12 +2500,14 @@ name = "tests-support" version = "1.0.0" source = { editable = "packages/tests-support" } dependencies = [ + { name = "orjson" }, { name = "pyyaml" }, { name = "requests" }, ] [package.metadata] requires-dist = [ + { name = "orjson" }, { name = "pyyaml", specifier = ">=6.0" }, { name = "requests" }, ]